본문 바로가기

전체 글79

템플릿 메서드 패턴(Template Method Pattern)이해하기 : 쉽게 설명한 디자인 패턴(C++) 템플릿 메서드 패턴(Template Method Pattern)이란? 템플릿 메서드 패턴은 알고리즘의 구조를 메서드에 정의하고, 일부 단계를 서브클래스에서 오버라이드하는 디자인 패턴입니다. 이 패턴을 사용하면 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계를 재정의할 수 있습니다. 템플릿 메서드 패턴은 다음 두 가지 주요 구성 요소로 이루어져 있습니다: AbstractClass: 템플릿 메서드를 정의하고, 알고리즘의 각 단계를 정의하는 메서드(일부는 기본 구현을 제공하고, 일부는 서브클래스에서 구현해야 함)를 포함합니다. ConcreteClass: AbstractClass에서 정의한 메서드를 오버라이드하여 알고리즘의 특정 단계를 구현합니다. 예시 코드 다음은 C++로 작성된 간단한 템플릿 메서드 패.. 2024. 1. 29.
상태 패턴(State Pattern)이해하기 : 쉽게 설명한 디자인 패턴(C++) 상태 패턴(State Pattern)이란? 상태 패턴은 객체의 내부 상태에 따라 여러 행동을 캡슐화하는 디자인 패턴입니다. 이 패턴을 사용하면 객체의 클래스를 변경하지 않고도 객체의 행동을 변경할 수 있습니다. 상태 패턴은 객체가 내부 상태에 따라 행동을 변경해야 할 때 유용합니다. 상태 패턴은 세 가지 주요 구성 요소로 이루어져 있습니다: Context: 사용자에게 유용한 인터페이스를 제공하고, 현재 상태를 정의하는 객체입니다. State: 모든 특정 상태의 행동을 캡슐화하는 인터페이스입니다. ConcreteState: State 인터페이스를 구현하는 서브클래스로, 특정 상태의 행동을 제공합니다. 예시 코드 다음은 C++로 작성된 간단한 상태 패턴의 예입니다: #include // State class.. 2024. 1. 29.
메멘토 패턴(Memento Pattern)이해하기 : 쉽게 설명한 디자인 패턴(C++) 메멘토 패턴(Memento Pattern)이란? 메멘토 패턴은 객체의 상태를 저장하고 이전 상태로 복원할 수 있는 디자인 패턴입니다. 이 패턴은 객체의 내부 상태를 캡슐화하지 않고 외부 객체에 저장하고 복원할 수 있게 해줍니다. 이 패턴은 주로 '실행 취소' 기능을 구현할 때 사용됩니다. 메멘토 패턴은 세 가지 주요 구성 요소로 이루어져 있습니다: Originator: 상태를 저장하고 복원할 수 있는 객체입니다. Memento: Originator의 상태를 저장하는 객체입니다. Caretaker: Memento를 저장하고 관리하는 객체입니다. 예시 코드 다음은 C++로 작성된 간단한 메멘토 패턴의 예입니다. #include #include #include // Memento class Memento { .. 2024. 1. 29.
해석자 패턴(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.
퍼사드 패턴 (Facade Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) 안녕하세요, 오늘은 소프트웨어 디자인 패턴 중 하나인 퍼사드 패턴(Facade Pattern)에 대해서 알아보겠습니다. '퍼사드'라는 단어는 프랑스어로 '건물의 정면'을 의미하는 단어로, 이를 소프트웨어 세계에 적용하면, '시스템의 정면 인터페이스'라는 뜻을 가집니다. 퍼사드 패턴은 복잡한 시스템을 간단하게 만드는 패턴으로, 외부에서 보기에는 단순하게 보이지만 내부적으로는 복잡한 작업을 수행할 수 있게끔 해줍니다. 퍼사드 패턴이란? 퍼사드 패턴은 복잡한 시스템의 인터페이스를 간단화시키는 구조적 디자인 패턴입니다. 이 패턴은 클라이언트와 복잡한 시스템 사이에 간단한 인터페이스를 제공하여, 시스템의 사용을 용이하게 합니다. 이 패턴을 사용하면 시스템의 복잡성을 감추고, 사용자 친화적인 인터페이스를 제공할 수.. 2024. 1. 29.