4. Motive & Usability
동일 객체의 표현 방법 다양화
MVC의 View의 역할 수행
객체의 생성 방법을 분리하여 다양화
여러 생성 알고리즘이 독립적으로 존재하는 경우
다양화된 생성 & 표현 방법을 동일한 절차로 사용
PDF
document
7. Effect
제품의 내부 표현 다양화
Builder를 통해 내부 표현 방법 관리
표현 방법을 추가하거나 수정할 때는 서브클래싱을 사용
생성 및 표현에 필요한 코드 분리
제품 객체의 세부 내용 캡슐화
생성 및 표현 절차 세분화
Director에서 실제 객체 생성
8. Implements
1. 조합, 구축에 필요한 인터페이스 정의
절차 상 추가 작업이 필요한 부분을 인터페이스로 정의
2. 제품 객체의 추상화 여부
만들어질 객체 간 공통점이 없는 경우 추상 클래스를 두지 않음
3. 일반적으로 Builder에서는 객체의 동작을 구현하지 않음
순수 가상 함수로 두지 않고 몸통을 비워둡니다
Open-Close Principle
10. Motive & Usability
무분별한 서브클래싱 예방
범용 객체를 최대한 활용
객체 생성 비용 절약
초기 값은 유지하되 일부 값을 변경하여 사용
Factory와는 다르다! Factory와는!
클래스 그룹을 형성하지 않음
런타임에 클래스 결정
Factory로 생성하는 객체를 복제하는 방법으로 조합 가능
12. Effect
런타임에 새로운 객체 추가/삭제
값, 구조를 다양화하여 새로운 객체 정의
멤버 변수의 값에 따라 새로운 객체 정의
기본 골격만을 원형으로 제공하여 유연성 확보
서브클래스의 수를 줄임
동적으로 클래스에 따라 응용프로그램 설정
Prototype Manager를 통해 클래스-프로그램 간 연결
13. Implements
1. Prototype Manager 사용
주로 Factory Method로 구현하거나 필요한 원형을 추가 등록
2. Clone() 구현
얕은 복사/깊은 복사를 잘 구분해야 합니다
3. Clone() 초기화
Clone()으로 객체 생성 이후 초기 값 설정
Initialize() 추가 구현
15. Motive & Usability, Structure
전역 변수의 객체지향 버전
전역 객체를 서브클래싱으로 확장 가능
Singleton
static Instance()
…
static uniqueInstance
Singleton Data
16. Effect
인스턴스 접근 통제
namespace 오용 예방
연산 및 표현 방법 정리
Singleton을 상속 받아 필요한 클래스를 전역화
인스턴스 개수 변경 가능
여러 개의 인스턴스에 대한 접근 방법 정의
정적 연산 대체
17. Implements
1. 객체의 유일성 보장
정적 객체의 인스턴스 선언은 한 곳에만 존재하게 구현
정적 객체의 초기화 시점에 초기화에 필요한 정보의 유무 확인
C++ 언어 차원에서 전역 객체의 생성 순서는 정의되어 있지 않음(undefined)
2. Singleton 서브클래싱
유일성이 보장된 서브클래스 관리
서브클래스 레지스트리