본문 바로가기
우테코 프리코스/프리코스 오픈미션

Facade 패턴이 뭐야?

by sloth365 2025. 11. 6.

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 패턴은 내부에서 작동하기

때문에 데이터를 자유롭게 전달하기 힘든 문제가 발생한다.

 

그래서 정답은 없고 어떤 방식을 사용할지는 상황에 따라 장단점을 고려해 보고 사용해야 할 것 같다.