C++ 24

flyweight pattern

flyweight pattern 정의 : 플라이웨이트 패턴는 동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 서로 공유하여 사용하도록 하여 메모리 사용량을 최소화하는 소프트웨어 디자인 패턴이다. 핵심 : 속성이 동일한 객체는 공유 할 수 있도록 만들자. flyweight #include #include #include // 속성이 동일한 객체는 공유 할수 있게 하자. - Flyweight class Image { std::string image_url; public: Image(const std::string& url) : image_url(url) { std::cout

Design Pattern 2022.12.01

iterator pattern

iterator pattern 정의 : 객체 지향 프로그래밍에서 반복자를 사용하여 컨테이너를 가로지르며 컨테이너의 요소들에 접근하는 디자인 패턴이다. 반복자 패턴은 컨테이너로부터 알고리즘을 분리시키며, 일부의 경우 알고리즘들은 필수적으로 컨테이너에 특화되어 있기 때문에 분리가 불가능하다. -> 서로 다른 자료구조들을 같은 방법으로 순회하고 싶다. #include int main() { std::List s = { 1,2,3,4,5 }; // 모든 요소가 떨어진 메모리 std::vector v = { 1,2,3,4,5 }; // 모든 요소가 연속된 메모리 } list는 보통 double linked list를 사용하여 구현되어있다 한다. 즉 요소 요소가 떨어져 있다. [ ←o→ ←o→ ←o→ ←o→ ] v..

Design Pattern 2022.11.20

Composite Pattern

- Structural Pattern. 폴더 / 파일 구조를 생각하여 코드를 짜 보자. - 폴더와 파일 class를 만들어야 한다. - 각각은 name을 가진다. - 폴더는 파일을 포함할 수 있다. - 파일은 각 사이즈를 가지고, 폴더는 각각의 사이즈를 가지진 않지만 본인 내부에 있는 파일 사이즈의 합을 내뿜는다. 해당 구조를 생각하여 간단하게 코드를 작성해 본다면 #include #include #include #include using namespace std; class File { private: string name; size_t size; public: File(const string& name, size_t size) : name(name), size(size) {} ~File() {} si..

Design Pattern 2022.05.18
반응형