본문 바로가기

분류 전체보기24

[C++ Design patter] Factory. 우선 코드부터 보자. #include #include #include #include "Helper.h" class Shape { public: virtual void draw() = 0; virtual ~Shape() {} virtual Shape* clone() = 0; }; class Rect : public Shape { public: void draw() override { std::cout cmd; if (cmd >= 1 && cmd draw(); } } } } 객체들의 생성을 담당하는 Factory를 만든다. 공장에서 물건을 찍어내는 것이랑 비슷하다. 자동차 공장같은데서 "견본품 하나 주시면, 제가 똑같이 찍어 드리겠습니다" 이런느낌이다. Shape는 draw()와 clone() 순수 가상 .. 2023. 11. 30.
[C++ Design Pattern] Flyweight Flyweight 기법은 => 객체의 인스턴스를 공유해서 메모리 사용을 최적화 하는 기법이다. 걍 자원을 공유한다고 생각하면 될 것 같다. #include #include #include class Image { std::string image_url; public: Image(const std::string& url) : image_url(url) { std::cout 2023. 11. 30.
[C++ Design Pattern] Adapter Adapter는 사실 중간자 역할을 해주는 간접층을 하나 생성하는 것이라고 생각하면 된다. #include #include #include class TextView { std::string data; public: TextView(const std::string& s) : data(s) {} void show() { std::cout 2023. 11. 30.
[C++ Design Pattern] Decorator Decorator 패턴은 객체 지향 디자인 패턴 중 하나. => 기능을 동적으로 추가하거나 확장 할 수 있게 도와주는 패턴 상속을 사용해서 기능을 확장하고, 객체를 감싸서 포장 하는 느낌으로 기능을 추가할 수 있다. Decorator 패턴은 크게 3가지의 구성 요소로 나뉘는데 1. Component Class => Interface를 제공 2. Concrete Component Class => 기능을 추가하고자 하는 객체 3. Decorator class => 기능을 추가시켜주는 class Picture를 하나 찍을건데, picture에 frame도 씌우고 emoticon도 추가하고 싶다. 아래 코드를 보면 #include #include struct Component { virtual void draw.. 2023. 11. 29.