Facade Pattern 이란?

- 파사드 패턴, 외관 패턴
- 파사드Facade 는 건물의 정면, 외관을 의미하는 프랑스어이다.
- 라이브러리같은 커다란 코드 뭉치에 대한 간략화된 인터페이스를 제공하는 형태의 패턴이다.
- 클라이언트는 파사드 패턴에서 제공하는 인터페이스를 통해 뒤에 숨겨진 코드들에 대해 알 필요없이 필요한 기능을 쉽게 사용할 수 있게 된다.
- 파사드 패턴의 인터페이스 클래스로 인해 라이브러리 바깥쪽의 코드가 라이브러리 안쪽 코드에 의존하지 않게 된다.
- 객체 지향 프로그래밍에서 자주 쓰이는 패턴이다.
예시
class CPU {
public void freeze() { ... }
public void jump(long position) { ... }
public void execute() { ... }
}
class Memory {
public void load(long position, byte[] data) {
...
}
}
class HardDrive {
public byte[] read(long lba, int size) {
...
}
}
class Computer {
public void startComputer() {
CPU cpu = new CPU();
Memory memory = new Memory();
HardDrive hardDrive = new HardDrive();
cpu.freeze();
memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));
cpu.jump(BOOT_ADDRESS);
cpu.execute();
}
}
class You {
public static void main(String[] args) throws ParseException {
Computer facade = ;
facade.startComputer();
}
}
Domain-Driven Design 에서의 Facade Pattern

- 위 사진은 DDD 에서의 어플리케이션 레이어 구성이다.
- DDD 에서 파사드 패턴은 Application 레이어에서 사용된다.
- Application 레이어는 Domain 계층의 객체들에게 작업을 위임하고 협력을 조정하여 User Interface 레이어에게 필요한 기능을 제공한다. → 이 역할을 파사드 패턴의 인터페이스가 담당한다.
- Domian 레이어에는 Service, Entity, Repository 등이 위치하고 있다.
DDD Application 레이어에서의 파사드 패턴 인터페이스의 특징과 역할
- 클라이언트에게 제공할 기능과 그 작업을 정의한다.
- Domain 계층에 작업을 위임하고 목표 달성을 위한 협력을 조정한다.
- MSA 환경에서는 다른 Micro Service 의 Application 레이어와 상호 작용을 하기도 한다.
- 비즈니스 규칙을 포함하지 않는다.
- 비즈니스 규칙은 Domain 레이어에 존재한다.
- 상태를 가지지 않는다.
- 인터페이스 메서드의 동작을 트랜잭션으로 묶어야 하는 경우도 있지만 지양한다.
- 얇게 유지되는 것을 지향한다.
머시따 머시따