JJ BLOG

Ruby on Rails로 웹개발을 하고있는 웹개발자입니다.

디자인패턴_Facade(퍼사드)

28 Oct 2019 »

python

Facade(퍼사드)

퍼사드 패턴은 클래스와 클래스 간의 관계가 복잡하여 동작 방식에 대해 이해하기 어려울 때 이를 단순하게 만들어주는 디자인 패턴입니다. 단순화된 인터페이스를 통해 서브 시스템을 더 쉽게 사용하기 위해서 사용합니다. 퍼사드 패턴의 장점은 클라이언트 구현과 서브시스템을 분리하여 사용한다는 점입니다. 예를들어 서브시스템 A, B, C 가 있을 때 A에 변경점이 생기더라도 퍼사드 패턴에서는 B,C를 변경해주지 않아도 됩니다.

facade

위의 구조처럼 사용자는 파사드 클래스를 통해 서브 시스템을 사용하며, 서브 시스템의 내부 구조에 대한 이해가 필요하지 않습니다.

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을 사용합니다. 패턴이라고 말하기 힘들정도로 간단하여 이해하기 쉬웠습니다! :)