취미17 [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] Strategy Pattern strategy pattern(전략 패턴) template struct IAllocator { virtual T* allocate(int size) = 0; virtual void deallocate(T* p, int size) = 0; virtual ~IAllocator() {} }; template class vector { T* buff; IAllocator* ax; public: void set_allocator(IAllocator* p) { ax = p; } void resize(int n) { buff = ax->allocate(n); ax->deallocate(buff, n); } }; template class newAllocator : public IAllocator { public: T.. 2023. 11. 29. 이전 1 2 3 4 5 다음