GOF의 DesignPattern 6

장식자 패턴

1. 용도 데코레이터 패턴은 런타임에 다른 객체에 영향을 주지 않고 개개의 객체에 속성이나 책임을 추가하거나 제거해야 할 경우에 유용할 수 있다. 예를 들면 텍스트 편집기에서 Text를 출력하는 창에 옵션에 따라 스크롤 바, 테두리 따위로 장식할 수 있게하고 싶을 때 장식자 패턴을 사용할 수 있다. 2. 구조 장식자 패턴은 간단히 말해서 컴포넌트 객체를 장식 객체로 감싸는 구조다. 일반화된 클래스 다이어그램을 살펴보자. 컴포넌트와 장식자의 관계를 보면 장식자도 컴포넌트에 포함되는 개념이다. 위의 텍스트 뷰(컴포넌트), 테두리(장식), 스크롤 바(장식)의 예를 객체 다이어그램으로 나타내면 아래와 같다. BorderDecorator 객체가 component로 ScrollDecorator 객체를 가지고, Sc..

3장 팩토리 메서드 패턴

팩토리 메서드는 제품의 모르는 서브클래스를 생산하는 메서드입니다. 클래스 구조 일반적인 클래스 구조는 아래와 같습니다. 여기 등장하는 참여자들을 알아봅시다. Product : 제품 추상 클래스 입니다. 팩토리 메서드가 생성하는 객체의 인터페이스 입니다. ConcreteProduct : Product 인터페이스를 실제로 구현합니다. 다양한 제품의 종류에 따라 정의함. Creator : 팩토리 메서드를 선언하는 클래스 입니다. 기본적인 팩토리 메서드를 구현하는 경우도 있고, 그냥 추상 메서드로 남기고 서브클래스에게 구현을 맡기는 경우도 있습니다. 팩토리 메서드를 호출합니다. ConcreteCreator : 다양한 제품의 종류에 따라 각 제품을 생산하도록 팩토리 메서드를 재정의한 클래스 입니다. 구현 방식 기..

3장 빌더 패턴

이번 글에서도 저번 글에 이어서 생성 패턴에 대해 알아봅니다. https://ddukddaksudal.tistory.com/127 3장. 생성 패턴 & 추상 팩토리 패턴 5가지 생성 패턴에 대해 공부해봅니다. 생성 패턴은 이름처럼 인스턴스를 생성하고 복합하는 방법에 대한 패턴들입니다. 여기서는 미로 만들기를 주제로, 각 생성 패턴들을 사용했을 때, 어떤 ddukddaksudal.tistory.com 저번 글에서 처럼 미로를 제작하는 시스템을 설계해 볼 것입니다. 이번에 사용할 패턴은 빌더 패턴입니다. 우선 빌더 패턴에 대해 간략히 설명한다. 빌더 패턴은 제품의 내부 표현과 생성을 분리시키고, 내부 표현을 다양화할 수 있는 패턴이다. 일반화된 클래스 구조를 보자. 참여자는 다음과 같다. Client : 제..

3장. 생성 패턴 & 추상 팩토리 패턴

5가지 생성 패턴에 대해 공부해봅니다. 생성 패턴은 이름처럼 인스턴스를 생성하고 복합하는 방법에 대한 패턴들입니다. 여기서는 미로 만들기를 주제로, 각 생성 패턴들을 사용했을 때, 어떤 다른 구조의 미로가 생성되는지 비교하며 학습해봅니다. 미로에는 방, 벽, 문의 3 가지 요소가 있습니다. 방은 4개의 방향으로 다른 요소와 이어져 있고, 방에서 방으로 Enter()할 수 있습니다. 방에 이어진 문으로 Enter()하면 문에 이어진 또다른 방으로 이동하게 됩니다. 추상 팩토리 패턴 추상 팩토리 패턴은 객체의 생성과 팩토리를 이용하는 시스템을 분리시키는 패턴입니다. 시스템은 추상화된 객체 생성 인터페이스만을 사용하고, 내부적으로 어떤 종류의 객체가 생성되는지는 추상 팩토리 패턴에게 맡깁니다. 기본적인 클래스..

2장 사례 연구: 문서 편집기 설계

이 장에서는 Lexi라는 문서 편집 프로그램의 설계 문제를 디자인 패턴을 사용하여 해결하는 방법을 설명한다. 여기서 보여준 설계 문제는 다음 7가지 이다. 문서 구조 서식 설정 사용자 인터페이스 꾸미기 여러 룩앤필 표준 지원 여러 윈도우 시스템 지원 사용자 조작 철자 검사와 붙임표 처리 이제 각 문제들에 대한 설명과 어떻게 해결했는 지에 대해 알아보자. 1. 문서 구조 문서 편집 프로그램은 편집할 문서에 대한 정보를 구조화할 필요가 있습니다. 쪽, 행, 글자 ,표 등 모든 그려지는 요소들을 글리프(Glyph) 라는 클래스의 서브클래스로 만듭니다. 그리고 재귀적 합성을 통해 글리프 안에 글리프가 들어가는 구조로 만듭니다. 이는 복합체 패턴에 해당합니다. 2. 서식 설정 여기서 말하는 서식이란 대표적으로 문..

1장 서론.

디자인 패턴이란 반복적으로 일어나는 문제들에 대한 해법이다. 일반적으로 하나의 패턴에는 다음 4가지 요소가 들어있다. 패턴 이름 : 패턴의 이름. 문제 : 언제 패턴을 사용하는가. 해법 : 설계를 구성하는 요소들과 요소들 간의 책임, 협력관계 서술. 결과 : 패턴을 적용해 얻는 결과와 장단점. 이 책에서는 주로 C++을 사용하고 간간이 스몰토크로 만든 예제가 제시된다. 디자인 패턴 기술하기 디자인 패턴을 설명하는 템플릿들입니다. 패턴 이름과 분류 의도 : 뭘 하는 패턴인지? 다른 이름 : 별명 동기 : 설계 문제 제시. 어떻게 문제를 해결하는지 시나리오. 활용성 : 어떤 상황에 적용할 수 있는지. 구조 : 객체 모델링 기법, 상호작용 다이어그램을 사용해 클래스들을 시각적으로 표기. 참여자 : 패턴을 구성..