Facade Pattern

YeJI Kang·2021년 6월 10일
0

Head First Design Pattern

목록 보기
7/14

퍼사드 패턴(Facade Pattern)의 정의

퍼사드 패턴(Facade Pattern)은 하나 이상의 복잡한 인터페이스를 깔끔하면서도 말쑥한 퍼사드(겉모양, 외관 등을 뜻함)으로 덮어주는 패턴입니다. 일련의 복잡한 클래스들을 단순화하고 통합된 클래스를 제공합니다.

Head First Design Patterns에서는 아래와 같이 퍼사드 패턴을 정의합니다.

퍼사드 패턴(Facade Pattern)
어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.

최소 지식 원칙

Design Pattern 7.
최소 지식 원칙 - 정말 친한 친구하고만 얘기하라.

시스템을 디자인 할 때, 어떤 객체든 그 객체와 상호작용을 하는 클래스의 개수에 주의해야 하며, 그런 객체들과 어떤 식으로 상호작용을 하는지에도 주의를 기울여야 한다는 뜻입니다.

이 원칙을 따르면 복잡하게 얽혀서 있는 시스템의 한 부분을 변경했을 때 다른 부분까지 줄줄이 고쳐야 되는 상황을 미리 방지할 수 있습니다.

최소 지식 원칙을 지키기 위해 아래와 같이 어떤 메소드에서든지 다음 네 종류 객체 내의 메소드만 호출할 수 있도록 가이드를 제시하고 있습니다.

  1. 객체 자체
  2. 메소드에 매개변수로 전달된 객체
  3. 그 메소드에서 생성하거나 인스턴스를 만든 객체
  4. 그 객체에 속하는 구성요소

네 개의 객체에 대한 예시는 아래를 확인하면 알 수 있습니다.

public class Car {
    Engine engine; // 4. 클래스의 구성 요소

    public Car() {}

    public void start(Key key) { // 2. 매개 변수로 전달된 객체
        Doors doors = new Doors(); // 3. 메소드에서 생성하거나 인스턴스를 만든 객체

        boolean authorized = key.turns(); // 2. 매개 변수로 전달된 객체의 메소드

        if (authorized) {
            engine.start(); // 4. 클래스의 구성 요소 객체의 메소드
            updateDashboardDisplay(); // 1. 객체 내에 있는 메소드
            doors.lock(); // 3. 메소드에서 생성하거나 인스턴스를 만든 객체의 메소드
        }
    }

    private void updateDashboardDisplay() {
        // update display
    }
}

추가 사항

  • 데메테르의 법칙과 최소 지식 원칙은 동일한 말입니다.
  • 최소 지식 원칙을 사용하면 객체들 사이의 의존성을 줄일 수 있고, 소프트웨어가 더 용이해질 수도 있습니다. 하지만 "래퍼" 클래스를 더 많이 만들면서 더 복잡해지고, 개발 시간도 늘어나고, 성능도 저하될 수 있습니다.
profile
재밌는 것만 하고 싶어 ʕ•ﻌ•ʔ

0개의 댓글