퍼사드 패턴이란 무엇이고 왜 쓰는가?
"퍼사드"는 건물의 정면을 의미하는 단어로 어떤 소프트웨어의 커다란 코드 블록에 대해서 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미한다.
퍼사드 객체는 고수준의 인터페이스를 정의하기 때문에 서브 시스템을 조금 더 쉽게 사용할 수 있다는 장점이 있다.
실습
HelpSystem 1.2.3이 존재하고 해당 시스템은 복잡한 내부 시스템을 갖고 있다고 간주하자!
- 해당 클래스가 package-private으로 선언되어있으며 이는 외부 패키지에서 접근할 수 없다는 것이 특징이다.
class HelpSystem01 {
public HelpSystem01() {
System.out.println("Call Constructor :: "+getClass().getName());
}
public void process() {
System.out.println("Call Process :: "+ getClass().getSimpleName());
}
}
class HelpSystem02 {
public HelpSystem02() {
System.out.println("Call Constructor :: "+getClass().getName());
}
public void process() {
System.out.println("Call Process :: "+ getClass().getSimpleName());
}
}
class HelpSystem03 {
public HelpSystem03() {
System.out.println("Call Constructor :: "+getClass().getName());
}
public void process() {
System.out.println("Call Process :: "+ getClass().getSimpleName());
}
}
퍼사드 클래스
- HelpSystem을 객체 생성과 동시에 함께 생성해주어 process 메서드 내부에 실행 메서드를 포함시킨다.
public class Facade {
private HelpSystem01 helpSystem01;
private HelpSystem02 helpSystem02;
private HelpSystem03 helpSystem03;
public Facade() {
helpSystem01 = new HelpSystem01();
helpSystem02 = new HelpSystem02();
helpSystem03 = new HelpSystem03();
}
public void process() {
helpSystem01.process();
helpSystem02.process();
helpSystem03.process();
}
}
Main
public class Main {
public static void main(String[] args) {
Facade facade = new Facade();
facade.process();
}
}
Code Link
References
'CS > DesignPattern' 카테고리의 다른 글
패턴 정리 (템플릿, 팩토리, 추상팩토리) (0) | 2020.06.18 |
---|---|
패턴 정리 (브릿지, 어댑터, 전략) (0) | 2020.06.18 |
(DesignPattern) 옵져버 패턴(1) (0) | 2020.05.30 |
(DesignPattern) 책임사슬 패턴 (0) | 2020.05.30 |
(DesignPattern) 방문자 패턴 (0) | 2020.05.30 |