TIL(16) - 퍼사드 패턴 (Facade)
# 퍼사드 패턴
"복잡한 과정을 간단하게 표현하는 패턴"
Facade는 "건물의 정면"을 의미하는 단어로 내부의 클래스를 추상화한 인터페이스를 외부에 제공해주는 의미를 지닌 패턴이다.
# 퍼사드 패턴 적용x
a~z까지의 기능들이 있습니다. a~z까지의 기능들을 모두 동작 시키기 위해서는 일일이 기능을 호출하고 동작 시켜야 하는 번거로움이 있습니다.
# 퍼사드 패턴 적용o
a~z까지의 기능들이 있습니다. a~z까지의 기능들을 모두 동작 시키기 위해서는 하나의 클래스에 모두 선언을 하면 다음 부터 버튼하나만 이용하여 a~z 모든 기능들을 동작시키고 멈추게 할 수 있습니다.
즉, 퍼사드 패턴이란 여러 클래스에 있는 기능들을 호출해야 하는 경우 일일이 호출하게 되면 코드가 복잡해지고 귀찮은 점이 많이 있습니다. 하지만 퍼사드 패턴을 이용하여 하나의 클래스에 퍼저있는 기능들을 선언하게 된다면 버튼 하나로 기능을 동작시키듯 간편하게 사용할 수 있다고 생각합니다.
class HelpSystem01 {
public HelpSystem01(){
System.out.println("Call Constructor : " + getClass().getSimpleName());
}
public void process(){
System.out.println("Call Process : "+ getClass().getSimpleName());
}
}
class HelpSystem02 {
public HelpSystem02(){
System.out.println("Call Constructor : " + getClass().getSimpleName());
}
public void process(){
System.out.println("Call Process : "+ getClass().getSimpleName());
}
}
class HelpSystem03 {
public HelpSystem03(){
System.out.println("Call Constructor : " + getClass().getSimpleName());
}
public void process(){
System.out.println("Call Process : "+ getClass().getSimpleName());
}
}
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();
}
}
public class Application {
public static void main(String[] args) {
Facade facade = new Facade();
facade.process();
}
}
HelpSystem01, HelpSystem02, HelpSystem03 기능이 있습니다.
Facade 클래스는 3기능을 모두 동작 시키는 클래스 입니다.
Application 클래스는 버튼에 비유할 수 있다고 생각합니다.
즉, 앞으로는 HelpSystem01, HelpSystem02, HelpSystem03을 일일이 호출하지 않아도 Application 클래스를 통해 버튼을 누르듯 호출하기만 한다면 HelpSystem01, HelpSystem02, HelpSystem03기능을 모두 사용할수 있다는 것입니다.