파사드 패턴 (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() 메소드만 호출하여 간단하게 서브시스템과 상호작용할 수 있다.
장단점
장점
•
복잡한 서브시스템을 간단한 인터페이스로 제공함으로써, 클라이언트 코드를 단순화한다.
•
새로운 서브시스템을 추가하거나 기존의 서브시스템을 변경해도, 파사드 클래스만 수정하면 된다.
단점
•
파사드 패턴은 서브시스템 내부의 복잡성을 숨기기 때문에, 서브시스템을 완전히 이해하지 못한 채로 사용할 수도 있다.
•
파사드 클래스가 하나의 복잡한 서브시스템을 다루는 경우, 파사드 클래스가 지나치게 커질 수 있다.
결론
파사드 패턴은 복잡한 서브시스템을 다루는 소프트웨어에서 코드의 복잡성을 줄이는 데 효과적이다. 하지만, 파사드 클래스가 지나치게 커지지 않도록 주의해야 하며, 서브시스템을 완전히 이해하지 못한 채로 사용하지 않도록 주의해야 한다.