[python] 퍼사드 디자인 패턴
퍼사드 디자인 패턴은 소프트웨어 개발에서 사용되는 구조적 디자인 패턴 중 하나입니다. 이 패턴은 복잡한 서브시스템에 대한 단순한 인터페이스를 제공하고, 서브시스템을 쉽게 사용할 수 있게 해줍니다.
패턴 구조
퍼사드 디자인 패턴은 세 가지 주요 컴포넌트로 구성됩니다.
-
퍼사드(Facade): 복잡한 서브시스템의 단순한 인터페이스를 제공합니다. 이 컴포넌트는 클라이언트와 서브시스템 사이의 인터페이스 역할을 수행합니다.
-
서브시스템(Subsystem): 퍼사드에 의해 단순화된 인터페이스를 제공하는 컴포넌트입니다. 이 컴포넌트는 실제 작업을 수행하며, 퍼사드에 의해 감싸진 형태로 존재합니다.
-
클라이언트(Client): 퍼사드를 통해 서브시스템을 사용하는 주체입니다. 클라이언트는 간단한 인터페이스를 통해 퍼사드에 요청을 보내고, 퍼사드는 이를 서브시스템으로 전달합니다.
예제
다음은 퍼사드 디자인 패턴을 이용한 간단한 예제입니다. 이 예제에서는 랩톱 컴퓨터의 부팅 과정을 퍼사드로 단순화시킵니다.
class PowerButton:
def __init__(self, sub_system):
self.sub_system = sub_system
def press(self):
print("전원 버튼을 누릅니다.")
self.sub_system.power_on()
self.sub_system.boot()
class SubSystem:
def power_on(self):
print("전원을 켭니다.")
def boot(self):
print("부팅 중입니다.")
sub_system = SubSystem()
power_button = PowerButton(sub_system)
power_button.press()
위 예제에서는 PowerButton
이 퍼사드 역할을 하고, SubSystem
이 서브시스템 역할을 합니다. PowerButton
의 press
메서드를 호출하면 퍼사드는 실제로 전원을 켜고 부팅을 시작합니다.
퍼사드 디자인 패턴의 장점
- 복잡한 코드를 단순화시켜서 클라이언트 코드를 간결하게 유지할 수 있습니다.
- 서브시스템의 변경에 유연하게 대응할 수 있습니다. 퍼사드를 통해 클라이언트와 서브시스템 간의 결합도를 낮출 수 있습니다.
- 여러 개의 서브시스템을 통합하여 통일된 인터페이스를 제공할 수 있습니다.
결론
퍼사드 디자인 패턴은 복잡한 서브시스템을 사용하기 쉬운 인터페이스로 감싸서 단순화시키는 디자인 패턴입니다. 이 패턴을 사용하면 코드를 더욱 관리하기 쉽게 만들 수 있고, 유연하게 확장할 수 있습니다.