본문 바로가기

Design Pattern6

[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 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.