본문 바로가기

Programming/c++ Design Pattern14

[C++ Design Pattern] Visitor Visitor 패턴 1 . 반복자(iteration) : 복합 객체의 모든 요소를 동일한 방식으로 열거 2 . 방문자(visitor) : 복합 객체의 모든 요소를 동일한 방식으로 연산 수행 아파트 단지에 방 100개가 있다고 하자 , 얘가 반복자이다. 가스 검침을 수행하는 가스 검침원 (Visitor1) 가전 제품을 설치해주는 설치 기사 (Visitor2) ~~~ 기능을 하는 ~~~~~~~~~~사람 (VisitorX) 이렇게 기능을 수행하는 역할들을 하나의 Class로 만들어 버리는 것이다. #include #include #include template struct IVisitor { virtual void visit(T& e) = 0; virtual ~IVisitor(){} }; template cl.. 2023. 12. 1.
[C++] Iterator Iterator(반복자) ?? - 복합 객체의 내부 구조를 노출하지 않고 , 동일한 방법으로 순차적으로 이동할 수 있는 방법을 제공 #include #include #include int main() { std::list s = { 1,2,3,4,5 }; std::vector v = { 1,2,3,4,5 }; auto p1 = s.begin(); auto p2 = v.begin(); while (p1 != s.end()) { std::cout 2023. 12. 1.
[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.