Abstract Factory Pattern(Creational Pattern)
추상 팩토리 패턴(Abstract Factory Pattern):
추상 팩토리 패턴은 행렬관계를 가진 클래스의 객체를 생성할때 유용하다.
| | 테마 1 | 테마 2 |
|--------|--------|---------|
| 프로덕1 | | |
| 프로덕2 | | |
| 프로덕3 | | |
예시 )
다크모드 | 라이트모드 | |
---|---|---|
버튼 | 선택! | |
체크박스 | 선택! | |
스크롤바 | 선택! |
위와 같은 행렬관계를 가진 클래스의 객체를 생성할때,
팩토리 자체를 추상화하여, 테마별로 팩토리를 생성하고,
프로덕트를 생성할때, 테마별로 프로덕트를 생성하도록 한다.
이런 디자인 패턴을 추상 팩토리 패턴이라고 한다.
구현 방법
추상 팩토리 패턴을 구현하기 위해서는 다음과 같은 요소들이 필요하다.
인터페이스 팩토리 를 상속받는 다크,라이트모드팩토리(컨크리트) 클래스를 정의한다.
프로덕트의 인터페이스 :
- 버튼
- 체크박스
- 스크롤바
프로덕트의 구현 클래스 :
- 다크모드버튼, 라이트모드버튼
- 다크모드체크박스, 라이트모드체크박스
- 다크모드스크롤바, 라이트모드스크롤바
추상 팩토리 패턴 구현
# 버튼 인터페이스(프로덕트) / 추상클래스
class Button:
def click(self):
pass
# 버튼 구현 클래스(프로덕트) / 컨크리트 클래스
class DarkButton(Button):
def click(self):
print("dark click")
# 버튼 구현 클래스(프로덕트) / 컨크리트 클래스
class LightButton(Button):
def click(self):
print("light click")
# 체크박스 인터페이스(프로덕트) / 추상클래스
# 스트롤바 인터페이스(프로덕트) / 추상클래스
# 팩토리 인터페이스(팩토리) / 추상클래스
class Factory:
def createButton(self):
pass
def createCheckBox(self):
pass
def createScrollBar(self):
pass
# 팩토리 구현 클래스(팩토리) / 컨크리트 클래스
class DarkFactory(Factory):
def createButton(self):
return DarkButton()
def createCheckBox(self):
return DarkCheckBox()
def createScrollBar(self):
return DarkScrollBar()
# 팩토리 구현 클래스(팩토리) / 컨크리트 클래스
class LightFactory(Factory):
def createButton(self):
return LightButton()
def createCheckBox(self):
return LightCheckBox()
def createScrollBar(self):
return LightScrollBar()
df = DarkFactory()
lf = LightFactory()
newDarkButton = df.createButton()
newDarkButton.click()
newLightButton = lf.createButton()
newLightButton.click()
728x90
반응형
'Dev > DesignPattern' 카테고리의 다른 글
[DesignPattern] Singleton Pattern (0) | 2023.04.25 |
---|---|
[DesignPattern] Builder Pattern (0) | 2023.04.25 |
[DesignPattern] Factory Method Pattern (0) | 2023.04.24 |
[DesignPattern] Factory Pattern (0) | 2023.04.24 |
[DesignPattern] SOLID Principle (4) | 2023.04.24 |