본문 바로가기

분류 전체보기24

[C++ Design Pattern] Composite Composite 패턴은 객체들을 트리 구조로 구성하여 개별 객체와 복합 객체(객체들의 집합)를 동일하게 취급할 수 있도록 하는 디자인 패턴인데, 객체들 간에 계층 구조를 만들어 트리로 표현하면서 개별 객체와 복합 객체를 일관성 있게 다룰 수 있게 도와줘. #include #include #include class Item { std::string name; public: Item(const std::string& name) : name(name) {} virtual ~Item() {} virtual int get_size() = 0; }; class File : public Item { int size; public: File(const std::string& name, int size) : Item(.. 2023. 11. 29.
[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.
[c++ Design Pattern] Template Method Template Pattern (템플릿 메서드) 템플릿 메서드 패턴은 어떤 알고리즘의 구조를 정의하고, 이 알고리즘의 특정 단계를 파생 클래스에서 구현할 수 있도록 하는 패턴입니다. 이렇게 하면은 추상 클래스 (interface 역할) 하는 부분은 수정하지 않아도, 새로운 파생 클래스에서 특정 virtual 함수 부분만 정의하면 문제 없이 프로그램이 동작하게 되는 이점이 있습니당. 우선 예제 코드를 살펴보면은, #include #include #include class Edit { std::string data; public: std::string get_data() { data.clear(); while (1) { char c = _getch(); if (c == 13) break; if (isdigi.. 2023. 11. 29.
[C++] OCP Code 예제 아래 코드를 함 보자. #include #include class not_implemented {}; // 예외 전용 클래스 class Shape { int color; public: virtual ~Shape() {} void set_color(int c) { color = c; } void draw() { std::cout 원하는 Shape을 복사하는 기능, color를 변경하는 기능, 면적을 구하는 기능을 제공하고자 하는데 모두 구현하지는 않았다. main 함수에서 while 반복문을 돌면서 cmd 값에 따라서 동작을 수행한다. cmd = 1 -> 새로운 Rect를 vector에 추가 cmd = 2 -> 새로운 Circle을 vector에 추가 cmd = 9 -> Vector에 쌓인 Shape들을 .. 2023. 11. 29.