Facade Pattern

manx·2022년 11월 15일
0

Facade Pattern 이란

  • 저수준 인터페이스들을 하나의 고수준 인터페이스로 묶어주는 패턴입니다.
  • 하나의 클래스에서 저수준 인터페이스들의 동작을 제어하기 위해서는 저수준 인터페이스들을 일일히 호출해야 합니다.
  • 이러한 저수준 인터페이스들을 하나의 고수준 인터페이스로 묶어 한 번의 호출로 동작을 제어할 수 있습니다.
  • 이 고수준 인터페이스를 ‘통합 인터페이스’라고 부릅니다.


Facade Pattern 예시

  • 컴퓨터를 시작하기 위해서는 CPU, Memory, HardDisk 등 많은 클래스들의 동작이 필요합니다.
  • 컴퓨터를 시작하는 작업에서, CPU / Memory / HardDisk 클래스들을 일일히 호출하는 것이 아닌, Computer 클래스의 startComputer 메서드를 호출하는 것 만으로 작업할 수 있습니다.
  • 이 때의 Computer 클래스가 퍼사드 클래스가 됩니다.
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();
	}
}

장단점

장점

  • SubSystem 간의 결합도를 낮출 수 있습니다.
  • SubSystem을 사용해야 할 때 다루어야 할 객체의 수를 줄여줍니다.
  • SubSystem에 대한 의존성을 한 곳으로 모을 수 있습니다.
  • 좀 더 간결하게 코드를 알아볼 수 있습니다.

단점

  • 퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 가지게 됩니다.

더 자세한 내용 : https://velog.io/@manx/Clean-Architecture-Ch.3-SOLID


내용 / 이미지 출처

profile
BackEnd Developer

0개의 댓글