Facade는 건물의 정면 외벽, 즉 '건물의 얼굴'을 뜻한다.
내부가 아닌 겉으로 보이는 것을 의미한다.
흔히 컴퓨터로 설명을 많이 하는데 클라이언트는 컴퓨터를 켤 때 전원을 켜기만 하면 된다.
컴퓨터가 내부에서 CPU 초기화, 메모리 로드, 하드디스크 부팅, 그래픽카드 활성화
이런 복잡한 작동들은 알 필요가 없다.
전원만 켠다면 컴퓨터가 내부에서 알아서 실행해 준다.
이것이 Facade 패턴이다. 일일이 작동들을 외부에서 알 필요 없이 내부로 다 처리해 버린다.
public class OptionSelector {
public Option select(int number) {
return selector.get(number);
}
}
위에 코드는 전략 패턴의 표준 방식으로 찾기만 하고 외부에서 play() 시킨다.
public class OptionSelector {
public void select(int number) {
Option option = selector.get(number);
option.play();
}
}
이 코드는 Facade 패턴으로 찾고 내부에서 알아서 play() 시킨다.
복잡한 로직을 내부로 감출 수 있는 장점이 있지만,
만약 play()가 파라미터로 데이터를 필요로 한다면?
그렇다면 OptionSelector 클래스 또한 데이터를 알고 있어야 하는 결합도 문제가 발생하고,
유연성이 낮다.
외부로 반환해서 외부에서 처리하게 된다면 유연하게 처리할 수 있지만 Facade 패턴은 내부에서 작동하기
때문에 데이터를 자유롭게 전달하기 힘든 문제가 발생한다.
그래서 정답은 없고 어떤 방식을 사용할지는 상황에 따라 장단점을 고려해 보고 사용해야 할 것 같다.
'우테코 프리코스 > 프리코스 오픈미션' 카테고리의 다른 글
| EnumMap 클래스란? (0) | 2025.11.09 |
|---|---|
| 의존성을 주입 하라고요? (0) | 2025.11.07 |
| 객체를 분리하는 기준이 뭘까? (0) | 2025.11.07 |
| 전략 패턴은 어떻게 사용하는 걸까? (0) | 2025.11.06 |
| 프로젝트가 처음인데 어떻게 설정해야 하지? (0) | 2025.11.05 |