Facade Pattern

JoJo Green·2022년 12월 23일
0

Programming Pattern

목록 보기
1/1
post-thumbnail

Facade Pattern 이란?

  • 파사드 패턴, 외관 패턴
    • 파사드Facade 는 건물의 정면, 외관을 의미하는 프랑스어이다.
  • 라이브러리같은 커다란 코드 뭉치에 대한 간략화된 인터페이스를 제공하는 형태의 패턴이다.
  • 클라이언트는 파사드 패턴에서 제공하는 인터페이스를 통해 뒤에 숨겨진 코드들에 대해 알 필요없이 필요한 기능을 쉽게 사용할 수 있게 된다.
  • 파사드 패턴의 인터페이스 클래스로 인해 라이브러리 바깥쪽의 코드가 라이브러리 안쪽 코드에 의존하지 않게 된다.
  • 객체 지향 프로그래밍에서 자주 쓰이는 패턴이다.

예시

/* Complex parts */

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) {
		...
	}
}

/* Façade */

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();
	}
}

/* Client */

class You {
	public static void main(String[] args) throws ParseException {
		Computer facade = /* grab a facade instance */;
		facade.startComputer();
	}
}

Domain-Driven Design 에서의 Facade Pattern

  • 위 사진은 DDD 에서의 어플리케이션 레이어 구성이다.
  • DDD 에서 파사드 패턴은 Application 레이어에서 사용된다.
    • Application 레이어는 Domain 계층의 객체들에게 작업을 위임하고 협력을 조정하여 User Interface 레이어에게 필요한 기능을 제공한다. → 이 역할을 파사드 패턴의 인터페이스가 담당한다.
      • Domian 레이어에는 Service, Entity, Repository 등이 위치하고 있다.

DDD Application 레이어에서의 파사드 패턴 인터페이스의 특징과 역할

  • 클라이언트에게 제공할 기능과 그 작업을 정의한다.
  • Domain 계층에 작업을 위임하고 목표 달성을 위한 협력을 조정한다.
    • aggregator 로서의 역할이 본질이다.
  • MSA 환경에서는 다른 Micro Service 의 Application 레이어와 상호 작용을 하기도 한다.
  • 비즈니스 규칙을 포함하지 않는다.
    • 비즈니스 규칙은 Domain 레이어에 존재한다.
  • 상태를 가지지 않는다.
  • 인터페이스 메서드의 동작을 트랜잭션으로 묶어야 하는 경우도 있지만 지양한다.
  • 얇게 유지되는 것을 지향한다.

2개의 댓글

comment-user-thumbnail
2022년 12월 23일

머시따 머시따

1개의 답글