본문 바로가기

CS(Computer Science)지식/[C++] 디자인 패턴15

해석자 패턴(Interpreter Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 해석자 패턴(Interpreter Pattern)이란? 해석자 패턴은 주어진 언어의 문법을 위한 표현을 정의하고, 이 언어로 작성된 문장을 해석하는 해석자를 사용하는 디자인 패턴입니다. 이 패턴은 주로 문법 트리를 구성하고 이를 통해 문장을 해석하는 데 사용됩니다. 해석자 패턴은 다음과 같은 경우에 유용합니다: 복잡한 문법을 가진 언어를 해석해야 하는 경우 문법 트리를 구성하고 이를 통해 문장을 해석해야 하는 경우 예시 코드 다음은 C++로 작성된 간단한 해석자 패턴의 예입니다: #include #include // Abstract Expression class AbstractExpression { public: virtual ~AbstractExpression() = default; virtual vo.. 2024. 1. 29.
명령 패턴(Command Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 명령 패턴(Command Pattern)이란? 명령 패턴은 행동 디자인 패턴 중 하나로, 요청을 객체의 형태로 캡슐화하여 서로 다른 사용자의 매개 변수를 캡슐화합니다. 이 패턴은 요청 자체를 객체로 만들어서 이를 클라이언트에게 전달하는 방식을 사용합니다. 이렇게 하면 클라이언트는 요청이 서비스를 어떻게 수행하는지 알 필요 없이 서비스를 사용할 수 있습니다. 명령 패턴은 다음과 같은 경우에 유용합니다: 요청을 큐에 넣고 나중에 실행하려는 경우 요청을 로그에 기록하고 시스템 충돌 후에 요청을 재실행하려는 경우 구조화된 요청을 발행하는 것이 필요한 경우, 즉 요청을 발행하는 객체와 요청을 수행하는 객체를 분리하려는 경우 예시 코드 다음은 C++로 작성된 간단한 명령 패턴의 예입니다: #include #incl.. 2024. 1. 29.
책임 연쇄 패턴(Chain of Reponsibility Design Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 책임 연쇄 패턴은 행동 디자인 패턴 중 하나로, 요청을 처리할 수 있는 객체의 체인을 만드는 패턴입니다. 이 패턴은 요청을 보낸 객체와 요청을 받아 처리하는 객체 사이의 결합을 피하도록 돕습니다. 요청은 체인의 객체들을 통과하며, 각 객체는 요청을 처리하거나 다음 객체로 전달합니다. 1.예시 코드 다음은 C++로 작성된 책임 연쇄 패턴의 예시 코드입니다. #include // Handler: Abstract base class for handlers class Handler { public: virtual Handler* setNext(Handler* handler) = 0; virtual std::string handle(std::string request) = 0; }; // BaseHandler: .. 2024. 1. 29.
플라이급 패턴(Flyweight Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 플라이급 패턴(Flyweight Pattern)이란? 플라이급 패턴은 구조 디자인 패턴 중 하나로, 메모리 사용량을 최소화하기 위해 공유를 통해 많은 수의 비슷한 객체를 효율적으로 지원하는 것을 목표로 합니다. 이 패턴은 객체의 공유 가능한 부분(내부 상태)과 공유되지 않는 부분(외부 상태)을 분리하여, 공유 가능한 부분은 객체 간에 공유하고, 공유되지 않는 부분은 객체가 독립적으로 가지도록 합니다. 플라이급 패턴은 다음과 같은 경우에 유용합니다: 많은 수의 객체를 사용해야 하고, 객체 생성 비용이 높은 경우 객체의 대부분 상태가 공유 가능한 경우 객체의 ID가 중요하지 않은 경우 예시 코드 다음은 C++로 작성된 간단한 플라이급 패턴의 예입니다: #include #include #include // F.. 2024. 1. 29.