Facade(퍼사드)
퍼사드 패턴은 클래스와 클래스 간의 관계가 복잡하여 동작 방식에 대해 이해하기 어려울 때 이를 단순하게 만들어주는 디자인 패턴입니다. 단순화된 인터페이스를 통해 서브 시스템을 더 쉽게 사용하기 위해서 사용합니다. 퍼사드 패턴의 장점은 클라이언트 구현과 서브시스템을 분리하여 사용한다는 점입니다. 예를들어 서브시스템 A, B, C 가 있을 때 A에 변경점이 생기더라도 퍼사드 패턴에서는 B,C를 변경해주지 않아도 됩니다.
위의 구조처럼 사용자는 파사드 클래스를 통해 서브 시스템을 사용하며, 서브 시스템의 내부 구조에 대한 이해가 필요하지 않습니다.
class Subsystem1:
def play(self):
pass
class Subsystem2:
def stop(self):
pass
class Subsystem3:
def pause(self):
pass
class Facade:
def __init__(self):
self.one = Subsystem1()
self.two = Subsystem2()
self.three = Subsystem3()
def exec(self):
self.one.play()
self.three.pause()
self.two.stop()
if __name__ == "__main__":
f = Facade()
f.exec()
Facade 클래스를 통해 Subsystem1,2,3을 사용합니다. 패턴이라고 말하기 힘들정도로 간단하여 이해하기 쉬웠습니다! :)