Abstract Factory pattern (팩토리 패턴)
2022. 2. 28. 10:08ㆍSoftware Architecture/Software design
- 목차
반응형
Abstract Factory Pattern
구체적인 concrete class가 무엇인지 몰라도 생성을 요청하고 생성된 객체를 전달 받을 수 있는 interface를 제공하는 의도로 만들어진 pattern 입니다.
위 그림에서 client는 PhoneFactory를 사용해서 어떠한 폰도 만들어 낼 수 있습니다. 이렇듯 생성에 대한 부분을 client에서 구현하지 않도록하여 다음과 같은 장점을 얻을 수 있습니다.
- 생성에 대한 코드를 각 client게 중복적으로 구현하지 않음
- 생성에 대한 코드를 한 곳에 모아 놓게 됨
- 생성과 사용의 독립적인 개발 및 유지보수가 가능
디자인 패턴은 결국
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 |