디자인패턴/구조
자바[JAVA] - 퍼사드 패턴(Facade Pattern)
Jours_
2024. 11. 9. 12:55
퍼사드 패턴
퍼사드 패턴은 복잡한 클래스들을 편하게 사용하기위해 인터페이스를 구성하는 구조 패턴입니다.
예제
IOT 를 조작하는 컨트롤러를 만든다고 가정해보겠습니다.
컨트롤러는 일어날때 커튼을 열고, 전등을 키고, 스피커에서 음악이 재생되도록 하고싶고,
집을 떠날때는 전등을 끄고, 스키퍼에서 음악이 멈추도록 하고싶습니다.
public class Remote {
private final Lights lights;
private final Curtains curtains;
private final Speaker speaker;
public Remote(Lights lights, Curtains curtains, Speaker speaker) {
this.lights = lights;
this.curtains = curtains;
this.speaker = speaker;
}
public void wakeUp() {
lights.on();
curtains.open();
speaker.musicStart();
}
public void leaveHome() {
lights.off();
speaker.musicStop();
}
}
public class Lights {
public void on() { ... }
public void off() { ... }
}
public class Curtains {
public void open() { ... }
public void close() { ... }
}
public class Speaker {
public void musicStart() { ... }
public void musicStop() { ... }
}
이렇게 작성한다면 Remote를 사용하는 사용자는 내부 클래스의 구현에 대해서 알 필요가 없어지고, 내부 클래스의 수정이 일어나도 Remote 코드만 수정하면 되므로 유연성이 향상됩니다.
이 퍼사드 패턴은 디자인패턴에 대해서 알지 못하더라도 그냥 자연스럽게 만들어지는 패턴같습니다. 쉽고 유용한 패턴이니 잘 적용해보시기 바랍니다.