Abstract Factory pattern (팩토리 패턴)

2022. 2. 28. 10:08Software Architecture/Software design

    목차
반응형

 

Abstract Factory Pattern

구체적인 concrete class가 무엇인지 몰라도 생성을 요청하고 생성된 객체를 전달 받을 수 있는 interface를 제공하는 의도로 만들어진 pattern 입니다. 

위 그림에서 client는 PhoneFactory를 사용해서 어떠한 폰도 만들어 낼 수 있습니다. 이렇듯 생성에 대한 부분을 client에서 구현하지 않도록하여 다음과 같은 장점을 얻을 수 있습니다. 

 

  1. 생성에 대한 코드를 각 client게 중복적으로 구현하지 않음
    1. 생성에 대한 코드를 한 곳에 모아 놓게 됨
  2. 생성과 사용의 독립적인 개발 및 유지보수가 가능

 

디자인 패턴은 결국 

1) 중복 코드의 제거

2) 확장성 제공

 

이 목적이며 생성 패턴도 위 두 가지 목적을 달성하고자 합니다. 

 

sample code

class AndroidPhoneFactory {
public:
    ...
    virtual std::shared_ptr<IPhone> createPhone() const;
    virtual std::shared_ptr<IPhoneScreen> createPhoneScreen() const;
    virtual std::shared_ptr<IPhoneCamera> createPhoneCamera() const;
    ...
};


shared_ptr<IPhone> AndroidPhoneFactory::create() {
	auto iscreen = createPhoneScreen();
    auto icamera = createPhoneCamera();
    if (iscreen && icamera) {
    	return iphone = std::make_shared<AndroidPhone>(iscreen, icamera);
    }
    
    return nullptr;
}
반응형

'Software Architecture > Software design' 카테고리의 다른 글

Builder pattern (빌더 패턴)  (0) 2022.02.28
Bridge pattern (브릿지 패턴)  (0) 2022.02.28
Adapter pattern(어뎁터 패턴)  (0) 2022.02.28
SA prj. #1  (0) 2021.12.19
Fundamentals of Software Architecture  (0) 2021.12.08