-
Facade Pattern디자인 패턴 2021. 10. 27. 21:17
스프링 slf4j(Simple Logging Facade for Java) 를 공부하던 도중 못보던 디자인 패턴이 발견되었다. 그건 이름에도 나와있는 Facade Pattern이였고 이번에 구글링을 통해서 내용을 정리하기로 했다.
💡 Facade 패턴이란?
디자인 패턴의 '구조' 패턴 중 하나로 객체지향 개발법에서 많이 쓰인다. Facade(퍼사드)란 여러 복잡한 서브클래스들의 인터페이스를 한데 묶어 간략화된 인터페이스를 제공하는 객체를 말한다.
🧩 어떤 장점이 있나?
- 여러 서브시스템을 하나의 인터페이스로 둠으로써 복잡한 서브시스템을 사용하기 편하게 한다.
- 서브시스템의 '의존성'이 최소화된다.
📗 Facade Pattern UML
from - https://en.wikipedia.org/wiki/Facade_pattern from - https://en.wikipedia.org/wiki/Facade_pattern 위의 클래스 다이어그램과 시퀀스 다이어그램에서 볼 수 있듯이 서브클래스들을 Facade라는 단일 인터페이스로 묶고, Client는 Facade를 사용하는 방식이다.
📖 구현
Code
class SubSystem1 { void log() { System.out.println("call at subSystem1 Object"); } } class SubSystem2 { void log() { System.out.println("call at subSystem2 Object"); } } class SubSystem3 { void log() { System.out.println("call at subSystem3 Object"); } } class FacadeClass { private final SubSystem1 subSystem1; private final SubSystem2 subSystem2; private final SubSystem3 subSystem3; public FacadeClass() { this.subSystem1 = new SubSystem1(); this.subSystem2 = new SubSystem2(); this.subSystem3 = new SubSystem3(); } void logSubSystems() { subSystem1.log(); subSystem2.log(); subSystem3.log(); } } class Driver { @Test void facadeTest() { FacadeClass facadeClass = new FacadeClass(); facadeClass.logSubSystems(); } }
Output
위의 구현과 같이 Subsystem의 기능들을 Facade의 인터페이스에 묶어서 드라이버가 Facade를 한번만 불러도 모든 코드가 동작하는 모습을 볼 수 있다.
Reference
https://en.wikipedia.org/wiki/Facade_pattern
Facade pattern - Wikipedia
The facade pattern (also spelled façade) is a software-design pattern commonly used in object-oriented programming. Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying or str
en.wikipedia.org
'디자인 패턴' 카테고리의 다른 글
Decorator Pattern (0) 2022.02.08 Observer Pattern (0) 2022.02.03 Strategy Pattern (0) 2022.02.02 싱글톤 패턴(Singleton Pattern) (0) 2021.10.28 디자인 패턴 개요 (0) 2021.01.06