30 Sep 2023 DesignPattern
퍼사드 (Facade)
한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공하는 패턴으로, 서브세스템을 사용하기 쉽도록 상위수준의 인터페이스를 정의합니다.
동기
시스템을 서브시스템으로구조화하면 복잡성을 줄이는데에 큰 도움이 된다. 공통적인 설계 목표는 서브시스템들 사이의 의사소통 및 종속성을 최소화하려는 것이다.
이런 목표를 달성하도록 도와주는 패턴이 퍼사드...
29 Sep 2023 DesignPattern
데코레이터 (Decorator)
객체에 동적으로 새로운 책임을 추가할 수 있게 합니다. 기능을 추가하려면, 서브클래스를 생성하는 것보다 융통성 있는 방법을 제공합니다.
다른 이름
랩퍼(Wrapper)
동기
가끔 전체 클래스에 새로운 기능을 추가할 필요는 없지만, 개별적인 객체에 새로운 책임을 추가할 필요가 있다. 새로운 서비스의 추가가 필요할...
29 Sep 2023 DesignPattern
컴포지트 (Composite)
부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성합니다. 사용자로 하여금 개별 객체와 복함 객체를 모두 동일하게 다룰 수 있도록 하는 패턴 입니다.
동기
그래픽 편집기나 구조도 캡처 시스템 같은 그래픽 응용프로그램을 살펴보면, 사룔자가 간단한 그림 구성요소들을 모아서 복잡한 다이어그램을...
23 Sep 2023 DesignPattern
브릿지 (Bridge)
구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 합니다.
다른 이름
핸들/구현부(Handle/Body)
동기
하나의 추상적 개념이 여러 가지 구현으로 구체화 될 수 있을 때, 대부분 상속을 이용해서 문제를 해결한다. 추상 클래스에서 추상적 개념에 대한 인터페이스를 정의하고, 구체적인 서브클래스에서 서로...
10 Sep 2023 DesignPattern
어댑터 (Adapter)
클래스의 인터페이스를 사용자가 기대하는 인터페이스의 형태로 적응(변환)시킵니다. 서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킵니다.
다른 이름
래퍼(Wrapper)
활용 방안
적응자 패턴은 다음 상황에서 사용한다.
- 기존 클래스를 사용하고 싶은데 인터페이스가 맞지 않을 때
- 아직 예측하지 못한 클래스나 실제 관련되지...