CS/디자인패턴
[디자인 패턴][구조 패턴] - 퍼사드 패턴
흰무
2023. 7. 12. 19:12
1. 퍼사드 패턴
복잡한 서브시스템을 단순한 인터페이스로 감싸서 클라이언트에게 간단한 접근 인터페이스를 제공하는 패턴
복잡한 시스템을 더 쉽게 사용할 수 있도록 하고, 시스템의 내부 구조에 대한 접근을 단순화
- 사용하는 경우
- 복잡한 서브시스템을 사용하는 과정을 단순화하고 싶을 때
- 서브시스템의 인터페이스를 감추고자 할 때
- 클라이언트가 여러 개의 객체와 상호작용하지 않고 단일 인터페이스를 통해 상호작용하길 원할 때
- 구현 방법
- 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();
}
}