Design Pattern/구조 패턴

Facade Pattern

어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다.

퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다.

Clent는 Facade 하나만 알고 있으면 수많은 subsystem class들을 사용할 수 있다.

 

컴퓨터를 작동시키기 위해 우리는 단순히 전원버튼만을 누르지만 이것도 퍼사드 패턴의 예

사용자는 버튼 하나의 클릭 만으로 컴퓨터를 실행 시키지만 컴퓨터 내부에서는 다양한 동작을 통해서 부팅하게 된다.

아래의 예에서는 부팅 과정을 간략화 하였습니다.

1. 서브시스템 클래스 

public class CPU {
    public  void  freeze() {
        System.out.println("freeze");
    }

    public void jump() {
        System.out.println("jump to");
    }

    public void execute() {
        System.out.println("execute");
    }
}
public class Memory {
    public void load() {
        System.out.println("load Memory");
    }
}
public class HardDrive {
    public void read() {
        System.out.println("read HardDriver");
    }
}

2. 퍼사드

 

퍼사드 패턴을 적용해서 부트시 CPU, MEMORY, HARDDRIVER를 작동 시킨다.

public class Computer {
    public void boot() {
        CPU cpu = new CPU();
        Memory memory = new Memory();
        HardDrive hardDrive = new HardDrive();

        cpu.freeze();
        hardDrive.read();
        memory.load();
        cpu.jump();
        cpu.execute();
    }
}

3. 클라이언트

public class FacadePatternDemo {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.boot();
    }
}

4. 실행 및 결과

public class FacadePatternDemo {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.boot();
    }
}

 

Reference

ko.wikipedia.org/wiki/%ED%8D%BC%EC%82%AC%EB%93%9C_%ED%8C%A8%ED%84%B4

'Design Pattern > 구조 패턴' 카테고리의 다른 글

Proxy pattern  (0) 2021.05.04
Decorator Pattern  (0) 2021.05.04
Composite Pattern  (0) 2021.05.04
Bridge Pattern  (0) 2021.05.04
Adapter pattern  (0) 2021.05.03