디자인패턴 시작----------------------------------------------------------------------------------------------
디자인 패턴에 대해서는 한번 훑어 봤지만 각 디자인 패턴에 대해서 실제로 쳐보지 않았으면 제대로 해봤다고 할수가 없을것 같아서 하루에 하나씩이라도 디자인패턴을 콘솔환경에서 시험적으로 쳐보고 추후 패턴을 적용한 코드를 만들때마다 올려보기로 했습니다.
(일단은 이론으로만 파악하려니 손이 근질근질해서 콘솔로 못할것도 아니고...)
일단 디자인패턴 도표부터 봅시다!
디자인패턴 관계도---------------------------------------------------------------------------------------------
약간 상세한 이미지--------------------------------------------------------------------------------------------
표로 정리----------------------------------------------------------------------------------------------
목적 |
디자인 패턴 |
패턴을 통해 다양화 할 수 있는 부분 |
생성패턴 |
추상 팩토리 |
제품 객체군 |
빌더 |
복합 객체 생성방법 |
|
팩토리 메서드 |
인스턴스화될 객체의 서브 클래스 |
|
원형 |
인스턴스화될 객체 클래스 |
|
단일체 |
클래스의 인스턴스가 하나일 때 |
|
구조패턴 |
적응자 |
객체에 대한 인터페이스 |
가교 |
객체 구현 |
|
복합체 |
객체의 합성과 구조 |
|
장식자 |
서브클래싱 없이 객체의 책임성 |
|
퍼사드 |
서브시스템에 대한 인터페이스 |
|
플라이급 |
객체의 저장 비용 |
|
프록시 |
객체 접근 방법 |
|
행동패턴 |
책임 연쇄 |
요청을 처리하는 객체 |
명령 |
요청의 처리 시점과 처리 방법 |
|
해석자 |
언어의 문법과 해석 방법 |
|
반복자 |
집합 객체 요소들의 접근 방법 및 순회 방법 |
|
중재자 |
어떤 객체들이 어떻게 상호 작용하는지 |
|
메멘토 |
언제 어떤 정보를 객체의 외부에 저장하는지 |
|
감시자 |
다른 객체에 종속적인 객체 수 종속적인 객체들의 상태 변경 방법 |
|
상태 |
객체의 상태 |
|
전략 |
알고리즘 |
|
템플릿 매서드 |
알고리즘의 단계 |
|
방문자 |
클래스의 변경없이 객체에 적용할 수 있는 연산 |
목표는 제목처럼 하루에 하나씩 쳐보고 이해하고 입니다. 아직 프로젝트가 명확하게 정해지지 않았기 때문에 실제 게임구조에 적용이 힘들겠지만 콘솔 환경에서 혀끝으로 맛이라도 봐보려고 합니다. 그럼 내일 생성패턴의 추상팩토리부터 시작해 보겠습니다.
심플한 UML보기----------------------------------------------------------------------------------------------
1. 클래스 다이어그램적인 측면으로 보기
디자인 패턴은 보게되면 UML방식으로 표현하는 경우가 많으니 기본적인 UML문서 보는법을 기억해 둬야 한다.
1. 추상클래스 (인스턴트 되지 않는 클래스 이미지에서는 AbstractClass로 이텔릭체로 표시한다.) -> 객체화 못한다.
1-1. 추상연산 (추상클래스안에 정의만 하고 연산은 없는 인스턴스 이텔릭체로 표시한다.)
2. 구체클래스 (실제 구현이 이루어지거나 추상클래스가 아닌 클래스 이미지 에서는 ConcreteSubClass)
3. 상속화살표 표시(Inner화살표 끝이 비어있는 화살표). "ConcreteSubClass는 AbstractClass를 상속하고 있다."
4. 생성화살표 표시(Creates 점선 화살표) "ConcreteClass는 AbstractClass(ConcreteSubClass)를 인스턴스화 한다."
5. 포함화살표 (Aggregation 화살표 끝에 검은 점찍힌 화살표, 검은 점이 찍힌것은 개수 제한없이 0개 이상을 가지고 있을 수 있다는 뜻)
"ConcreteClass는 AbstractClass를 맴버로 가지고 있다."
6. 객체 참조 (Object Referencef 끝이 꺽인 선으로된 화살표) ConcreteClass는 AbstractClass의 객체를 참조하고 있다.
2. 클래스 객체 관계적인 측면으로 보기
객체들은 타원으로 표시. 객체간의 관계는 화살표로 표시
다원 가운데에 줄이 있는 경우와 없는 경우의 차이는 줄이 있는 경우에는 구체적으로 객체 내부에 다른 객체를 참조하는 데이터 멤버가 같이 표시된다는 점이다.
3. 클래스 동작적인 측면으로 보기
객체간의 동작 형태를 표현할때는 객체는 사각형으로 표시된다. 시스템 프로그래밍에서 각 쓰레드나 프로세스의 동작을 실행흐름으로 보는 것과 비슷한 형태를 띈다.
각 객체의 세로축은 시간의 흐름을 표시한다. 이때 세로 축의 조그만 사각형은 해당 객체가 동작중인 기간을 의미한다. 한편 어떤 객체가 다른 객체 맴버의 함수를 호출하는것은 그 함수의 명칭과 가로 화살표로 표시한다.
'게임개발공부 > 디자인패턴' 카테고리의 다른 글
생성패턴 <프로토 타입> (0) | 2013.12.17 |
---|---|
쓰레드 환경에서 싱글톤? (0) | 2013.12.16 |
생성패턴 <팩토리 메서드> (0) | 2013.12.15 |
생성패턴 <빌더> (0) | 2013.11.24 |
생성패턴 <추상팩토리> (0) | 2013.11.20 |