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