DEV ℧ Developer Diary

[DesignPattern] 컴포지트 (Composite)

컴포지트 (Composite)

부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성합니다. 사용자로 하여금 개별 객체와 복함 객체를 모두 동일하게 다룰 수 있도록 하는 패턴 입니다.

동기

그래픽 편집기나 구조도 캡처 시스템 같은 그래픽 응용프로그램을 살펴보면, 사룔자가 간단한 그림 구성요소들을 모아서 복잡한 다이어그램을...

[DesignPattern] 브릿지 (Bridge)

브릿지 (Bridge)

구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 합니다.

다른 이름

핸들/구현부(Handle/Body)

동기

하나의 추상적 개념이 여러 가지 구현으로 구체화 될 수 있을 때, 대부분 상속을 이용해서 문제를 해결한다. 추상 클래스에서 추상적 개념에 대한 인터페이스를 정의하고, 구체적인 서브클래스에서 서로...

[DesignPattern] 어댑터 (Adapter)

어댑터 (Adapter)

클래스의 인터페이스를 사용자가 기대하는 인터페이스의 형태로 적응(변환)시킵니다. 서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킵니다.

다른 이름

래퍼(Wrapper)

활용 방안

적응자 패턴은 다음 상황에서 사용한다.

  • 기존 클래스를 사용하고 싶은데 인터페이스가 맞지 않을 때
  • 아직 예측하지 못한 클래스나 실제 관련되지...

[DesignPattern] 프로토타입 (Prototype)

프로토타입 (Prototype)

원영이 되는(prototypical) 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다.

활용 방안

프로토타입 패턴은 생성, 복합, 표현 방법에 독립적인 제품을 만들고자 할 때 쓴다.

  • 인스턴스화할 클래스를 런타임에 지정할 때
  • 제품 클래스 계통과 병렬적으로 만드는 팩토리...

[DesignPattern] 싱글톤 (Singleton)

싱글톤 (Singleton)

오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공합니다.

활용 방안

싱글톤은 다음과 같은 상황에 사용할 수 있다.

  • 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점(accesspoint)으로 모든 사용자가 접근할 수 있도록 해야 할 때
  • 유일한 인스턴스가...