프로그래밍/디자인패턴

디자인 패턴 - Facade (Structural Pattern)

aiemag 2021. 2. 18. 13:56
반응형

Structural Pattern인 Facade Pattern에 대해 정리합니다.

 

※ facade는 프랑스어인 Façade를 어원으로 하는 '건물의 정면'이라는 의미입니다.

 


Definition

 

Facade 는 시스템 외부에 대해서는 단순한 인터페이스를 보여주는 패턴

 

Facade Pattern은 Structural Pattern에 해당합니다.

 


Class Diagram

Facade의 역할은 시스템을 구성하는 많은 역할에 대해 '창구' 역할을 합니다.

 

ClassA, ClassB, ClassC 는 각기 저마다의 역할을 수행하지만 Facade의 역할은 신경쓰지 않습니다.

 

 

 


Sample Case

다음은 Facade 패턴을 적용한 시나리오입니다.

 

Scenario

우리는 이사를 하기로 하여 집(House)을 보러 갑니다.

 

집을 보기 위해서는 대문에 들어서기만 하면(enterToGate())

 

관리인(HouseKeeper)에게 가이드(guide())를 받아 집을 구경할 수 있습니다.

 

물론 직접 Room을(lookAround()) 할 수 있고, 관리인에게 정보만 얻을 수(talk())도 있습니다.

 

Class Diagram

Code

 

1
2
3
4
5
public class Main {
    public static void main(String[] args) {
        House.enterToGate("'Sweet House'");        
    }
}
cs

 

1
2
3
4
5
6
7
8
public class House {
    public House() {}
    
    public static void enterToGate(String houseName) {
        HouseKeeper hk = new HouseKeeper(houseName);
        hk.guide();
    }
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class HouseKeeper {
    private String houseName;
    
    public HouseKeeper(String houseName) {
        this.houseName = houseName;
    }
    
    public void talk() {
        System.out.println(this.houseName+" was built in 1982.\n");
    }
    
    public void guide() {
        talk();
        Room.lookAround(this.houseName);
    }
}
cs

 

1
2
3
4
5
public class Room {
    public static void lookAround(String houseName) {
        System.out.println(houseName+" has two rooms.\n");
    }
}
cs

 

실행 결과입니다.

 

 

반응형