CS/디자인패턴

[디자인 패턴][구조 패턴] - 퍼사드 패턴

흰무 2023. 7. 12. 19:12

1. 퍼사드 패턴

복잡한 서브시스템을 단순한 인터페이스로 감싸서 클라이언트에게 간단한 접근 인터페이스를 제공하는 패턴
복잡한 시스템을 더 쉽게 사용할 수 있도록 하고, 시스템의 내부 구조에 대한 접근을 단순화
  • 사용하는 경우
    • 복잡한 서브시스템을 사용하는 과정을 단순화하고 싶을 때
    • 서브시스템의 인터페이스를 감추고자 할 때
    • 클라이언트가 여러 개의 객체와 상호작용하지 않고 단일 인터페이스를 통해 상호작용하길 원할 때
  • 구현 방법

 

퍼사드 패턴 UML 다이어그램

  • Facade 클래스 : 클라이언트와 서브시스템 간의 중간 역할을 수행하며, 클라이언트에게 단순한 인터페이스를 제공, 서브시스템의 복잡한 내부 동작을 감추고 클라이언트의 요청을 적절한 서브시스템 객체로 전달
  • SubSystem 객체 : 서브시스템의 실제 동작을 담당하는 객체, Facade는 이 객체들과 상호작용하여 클라이언트의 요청을 처리

 

  • 예시
// Subsystem 1
class Subsystem1 {
    public void operation1() {
        System.out.println("Subsystem1 operation1");
    }

    public void operation2() {
        System.out.println("Subsystem1 operation2");
    }
}

// Subsystem 2
class Subsystem2 {
    public void operation1() {
        System.out.println("Subsystem2 operation1");
    }

    public void operation2() {
        System.out.println("Subsystem2 operation2");
    }
}

// Facade 클래스
class Facade {
    private Subsystem1 subsystem1;
    private Subsystem2 subsystem2;

    public Facade() {
        subsystem1 = new Subsystem1();
        subsystem2 = new Subsystem2();
    }

    public void operation() {
        subsystem1.operation1();
        subsystem1.operation2();
        subsystem2.operation1();
        subsystem2.operation2();
    }
}

// Client
public class Main {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.operation();
    }
}