Search

파사드 패턴

파사드 패턴 (Facade Pattern)

파사드 패턴은 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나이다. 파사드 패턴은 복잡한 서브시스템을 간단한 인터페이스로 제공함으로써, 클라이언트 코드가 서브시스템과 상호작용하는 것을 간소화 한다.

구조

파사드 패턴은 다음과 같은 구조를 가진다.
Facade : 파사드의 역할을 수행하는 클래스. 서브시스템 내부의 모듈들을 조정하며, 클라이언트가 서브시스템과 상호작용하는데 필요한 간단한 인터페이스를 제공한다.
Subsystem Classes : 서브시스템의 기능을 실제로 수행하는 클래스들. Facade 클래스는 이들 클래스들과만 상호작용한다.

예시

다음은 파사드 패턴을 사용한 간단한 예시이다.
class SubsystemA: def method1(self): print("SubsystemA method1 called.") class SubsystemB: def method2(self): print("SubsystemB method2 called.") class Facade: def __init__(self): self._subsystem_a = SubsystemA() self._subsystem_b = SubsystemB() def method(self): self._subsystem_a.method1() self._subsystem_b.method2() if __name__ == "__main__": facade = Facade() facade.method()
Plain Text
복사
위 코드에서 Facade 클래스는 SubsystemA와 SubsystemB 클래스의 메소드를 노출하지 않고, method() 메소드 하나만을 노출한다. 클라이언트는 Facade 클래스의 method() 메소드만 호출하여 간단하게 서브시스템과 상호작용할 수 있다.

장단점

장점

복잡한 서브시스템을 간단한 인터페이스로 제공함으로써, 클라이언트 코드를 단순화한다.
새로운 서브시스템을 추가하거나 기존의 서브시스템을 변경해도, 파사드 클래스만 수정하면 된다.

단점

파사드 패턴은 서브시스템 내부의 복잡성을 숨기기 때문에, 서브시스템을 완전히 이해하지 못한 채로 사용할 수도 있다.
파사드 클래스가 하나의 복잡한 서브시스템을 다루는 경우, 파사드 클래스가 지나치게 커질 수 있다.

결론

파사드 패턴은 복잡한 서브시스템을 다루는 소프트웨어에서 코드의 복잡성을 줄이는 데 효과적이다. 하지만, 파사드 클래스가 지나치게 커지지 않도록 주의해야 하며, 서브시스템을 완전히 이해하지 못한 채로 사용하지 않도록 주의해야 한다.