일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 싱글톤 패턴
- 브릿지 패턴
- 팩터리 메서드
- 내부 팩터리
- 빌더
- 싱글톤
- 컴포지트 패턴
- 싱글턴
- 싱글턴 패턴
- 컴포지트 빌더
- 함수형 팩터리
- 동적 데코레이터
- 단순한 빌더
- 프로토타입 중복처리
- 브릿지
- 디자인 패턴
- 컴포지트
- 데커레이터
- 데커레이터 패턴
- 추상 팩터리
- 빌더 패턴
- 프로토타입
- 팩터리 패턴
- 팩터리
- 그루비 스타일 빌더
- 프로토타입 패턴
- 흐름식 빌더
- 동적 데커레이터
- 모던C++디자인패턴
- 디자인패턴
- Today
- Total
목록분류 전체보기 (65)
GGym's Practice Notes
책 : 게임 프로그래밍 패턴 (https://book.naver.com/bookdb/book_detail.nhn?bid=10615724) 참고 블로그 글 : https://boycoding.tistory.com/107?category=959177 C++ 디자인 패턴 03. 관찰자 패턴, 옵저버 패턴, Observer Pattern 관찰자 패턴, 옵저버 패턴, Observer Pattern 객체 사이에 일 대 다의 의존 관계를 정의해두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지 받고 자동으로 업에이트될 수.. boycoding.tistory.com 관찰자 패턴은 이대로 사용하면 종속성 문제와 같은 문제들도 클 것 같다... C++ 디자인 패턴 책에서 이러한 문제..
# 추상팩터리 그동안 객체 한개를 생성하는 경우를 살펴봤다. 드물지만 여러 종류의 연관된 객체를 생성해야 할 경우도 있다. 추상 팩터리는 그러한 경우를 위한 패턴이다. 뜨거운 차와 커피를 판매하는 카페를 운영해야한다고 가정했을때, 이 두 음료는 다른 장비를 이용해 만들어진다. 다음과 같이 뜨거운 음료를 추상화하는 HotDrink를 정의한다. struct HotDrink{ virtual void prepare(int volume) = 0; }; struct Tea : HotDrink{ void prepare(int volume) override{ cout
# 시나리오 직교 좌표계의 좌표점 정보를 저장하려 한다고 하면 아래와 같이 구현할 것이다. struct Point{ // 직교 좌표계 생성자 Point(const float x, const float y) : x{x}, y{y} {} // 극 좌표계 생성자 Point(const float r, const float theta){ x = r * cos(theta); y = r * sin(theta); } // 두개의 생성자 오버로딩이 겹친다... (float, float) float x, y; // 직교 좌표계 좌표값 } 이때 직교좌표계가 아닌 극좌표계를 추가하고 극좌표계의 좌표값으로 저장한다고 하면 문제가 된다. 쉽게 생각하면 극좌표계용 생성자를 추가하면 되지 않을가 싶지만 직교 좌표계의 생성자와 구분이..
컴포지트 빌더는 객체 하나를 생성하는데 복수의 빌더가 사용되는 경우 사용된다. BuilderBase에 여러개의 builder를 두어 객체가 생성되게 한다. 객체가 생성될때는 아래와 같이 생성된다. Person p = Person::create() .lives().at("123 London Road").with_postcode("SW1 1GB").in("London") .works().at("PragmaSoft").as_a("Consultant").earning(10e6); * 저자는 참조를 사용하였지만 코드가 에러를 계속 에러를 뱉어낸다. 아마 PersonBuilder에서 생성된 객체가 PersonBuilderBase로 참조될 때 유지가 안되는 것 같다. 참조를 포인터로 변경하여 에러를 고쳤다. - 전체..
C++ 에서도 HTML에 호환되는 DSL을 효과적으로 만들 수 있다. DSL (Domain Specific Languege) : 도메인 특화 언어 관련 특정 분야에 최적화된 프로그래밍 언어. (*Groovy, Kotlin에서 생성 지원) 해당 분야 또는 도메인의 개념과 규칙을 사용 아래와 같은 태그를 생성한다. struct Tag{ string name; string text; vector children; vector attribute; friend ostream& operator
빌더 패턴은 생성이 까다로운 객체를 쉽게 처리하기 위한 패턴이다. 즉, 생성자 호출 코드 단 한 줄로 생성할 수 없는 객체를 다룬다. - 시나리오 웹 페이지를 그리기위한 컴포넌트들을 생성해야 한다고 할때 각각의 HtmlElement를 생성하는 과정을 간소화 한다. 객체 지향 스타일을 채용하여 HtmlElement 클래스를 정의하여 각 html 태그에 대한 정보를 저장한다. struct HtmlElement{ string name; string text; vector elements; string str(int indent = 0) const{ // 컨텐츠를 양식에 맞추어 출력 } HtmlElement(){} HtmlElement(const string& name, const string& text) : ..