Design Pattern 5

[Design Pattern] state pattern

state pattern 정의 : 상태 패턴(state pattern)은 객체 지향 방식으로 상태 기계를 구현하는 행위 소프트웨어 디자인 패턴이다. 상태 패턴을 이용하면 상태 패턴 인터페이스의 파생 클래스로서 각각의 상태를 구현함으로써, 또 패턴의 슈퍼클래스에 의해 정의되는 메소드를 호출하여 상태 변화를 구현함으로써 상태 기계를 구현한다. -> 객체가 하는 모든 동작을 교체한다. 마치 다른 클래스를 사용하는 것 같은 효과를 얻을 수 있다. 동작을 할 때, 변하지 않는 것은 그대로 두고 변하는 것을 다른 클래스로 분리하는 것이 핵심. 말로 설명하면 복잡하니, 코드를 보자. #include class Character { public: int state; void run() { if (state == 1) ..

Design Pattern 2023.05.19

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
반응형