Design Pattern 3

[C++] 컴포짓 패턴 (Composite pattern)

객체의 포함관계를 나타내는 패턴입니다. 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8F%AC%EC%A7%80%ED%8A%B8_%ED%8C%A8%ED%84%B4 위의 코드를 구현해 보겠습니다. 간단히 아래와 같이 마우스 우클릭 메뉴라고 상상해보시면 됩니다. Component는 Composite와 Leaf를 동일한 목적으로 사용하기 위해 만든 공통의 조상 클래스 입니다. Leaf 클래스는 는 하위 메뉴가 없는 선택 가능한 메뉴로 operation() 을 수행합니다. Composite 클래스는 add()와 remove()로 하위 메뉴를 추가..

Pattern/C++ 2021.04.07

[C++] 템플릿 메소드 패턴 (Template method pattern)

동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다. 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다. - https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_%EB%A9%94%EC%86%8C%EB%93%9C_%ED%8C%A8%ED%84%B4 동작 상 흐름의 뼈대가 되는 부분은 변하지 않게 정의하고, 변하는 부분만 파생 클래스에서 재정의할 수 있도록 만든 패턴입니다. 부모 클래스에서는 뼈대가 되는 부분은 private이나 protected로 정의하여 외부에서 건들지 못하게 하고, 변해야 하는 부분은 public으로 정의하여 파생 클래스에서 재정의할 수 있도록 합니다. 이런 동작을 통해 코드의 중복을 ..

Pattern/C++ 2021.03.21

[C++] 프로토타입 패턴 (Prototype pattern)

객체를 복사하여 새로운 객체를 만들 때 사용하는 패턴입니다. 객체를 새로 생성할 때, 객체의 타입을 프로토타입인 인스턴스로부터 결정되도록 하며, 인스턴스는 새 객체를 만들기 위해 자신을 복제(clone)하는 패턴. https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85_%ED%8C%A8%ED%84%B4 객체를 생성할 때 런타임 시 new를 사용하지 않고 clone하기 때문에 내부의 변수(속성, attribute)들이 그대로 복제됩니다. new를 사용하면 내부의 변수들은 초기화된 상태로 새 객체가 생성됩니다. 이를 위해 부모클래스에서 virtual 함수로 Clone()을 정의해 주어야 합니다. #include using nam..

Pattern/C++ 2021.03.21