추상 팩토리 패턴 (Abstract Factory Pattern)

임동혁 Ldhbenecia·2023년 4월 21일
0

Design Pattern

목록 보기
4/6
post-thumbnail

디자인 패턴: Abstract Factory Pattern

Creation Design Pattern
오브젝트를 생성하는 방법을 다루는 패턴
이름과 같이 공장을 뜻하며, 공장은 함수 또는 클래스로 나타낼 수 있음


Factory 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)에서 그 제품을 구체화시켜 정의해주었다.

profile
지극히 평범한 공대생

0개의 댓글