Creation Design Pattern
오브젝트를 생성하는 방법을 다루는 패턴
이름과 같이 공장을 뜻하며, 공장은 함수 또는 클래스로 나타낼 수 있음
# 버튼
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 CheckBox:
def check(self):
pass
class DarkCheckBox(CheckBox):
def check(self):
print("dark check")
class LightCheckBox(CheckBox):
def check(self):
print("light check")
# 스크롤
class ScrollBar:
def scroll(self):
pass
class DarkScrollBar(ScrollBar):
def scroll(self):
print("dark ScrollBar")
class LightScrollBar(ScrollBar):
def scroll(self):
print("light ScrollBar")
# 제품 생성
class UIFactory:
def getButton(self):
pass
def getCheck(self):
pass
def getScroll(self):
pass
# 다크 팩토리
class DarkFactory(UIFactory):
def getButton(self):
return DarkButton()
def getCheck(self):
return DarkCheckBox()
def getScroll(self):
return DarkScrollBar()
# 라이트 팩토리
class LightFactory(UIFactory):
def getButton(self):
return LightButton()
def getCheck(self):
return LightCheckBox()
def getScroll(self):
return LightScrollBar()
# 다크모드
dark_factory = DarkFactory()
button = dark_factory.getButton()
button.click() # 출력: dark click
# 라이트모드
light_factory = LightFactory()
checkbox = light_factory.getCheck()
checkbox.check() # 출력: light check
강의 수업 시간에 배운 내용으로 딱히 별 내용이 없다고 생각되었다.
다양한 테마를 만들기 위해서 UIFactory를 통해 제품을 생성하고
세부 공장(Dark, LightFactory)에서 그 제품을 구체화시켜 정의해주었다.