320x100

분류 전체보기 435

[구조 패턴] - 파사드(Facade)

구조 #pragma once #include class ClassA { public: void Operate() { std::cout OperateClassC(); return 0; } 파사드 객체는 클라이언트를 대신하여 객체들과 상호 작용하며, 객체들을 통합시킨 간략한 인터페이스를 클라이언트에게 제공한다. 클라이언트가 내부 구조에 의존하지 않고 파사드 객체를 통해 객체 구조를 제어할 수가 있어 코드의 유연성이 향상된다.

프로그래밍/GoF 2022.01.11

[구조 패턴] - 어댑터(Adapter)

구조 #pragma once #include class IAdapter { public: virtual void OperateAdapter() = 0; }; class Adaptee { public: void OperateAdaptee() { std::cout OperateAdapter(); return 0; } 클래스에 인터페이스를 직접 구현하는것도 방법이지만, 그것은 SOLID의 개방-폐쇄의 원칙에 어긋나기도 하고 라이브러리를 사용하는 경우 수정이 불가능하기도 하다. 클래스(Adaptee)와 인터페이스(IAdapter) 사이에 어댑터의 개념을 가진 클래스(ImplementationAdapter)를 만들어 클라이언트에게 클래스에 대한 인터페이스를 제공한다. 클라이언트는 클래스와 연결된 어댑터를 인터페이..

프로그래밍/GoF 2022.01.10

[행동 패턴] - 방문자(Visitor)

구조 #pragma once #include class IVisitor; class BaseClass { public: virtual void accept(IVisitor* visitor) = 0; }; class DerivedClassA : public BaseClass { public: void accept(IVisitor* visitor) override { visitor->visitElementA(this); } void operationA() { std::cout accept(visitor); classB->accept(visitor); system("pause"); return 0; } 객체(DerivedClass)에 대한 알고리즘(accept function)을 객체의 구조로부터 분리하여 방..

프로그래밍/GoF 2022.01.09
320x100