본문 바로가기
반응형

Design Pattern24

C++ - 메멘토 패턴 (Memento Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 메멘토 패턴 (Memento Pattern) - 행동 패턴 - 객체의 내부 상태를 저장하고 나중에 복원할 수 있는 패턴 - 상태를 변경하면서 객체를 수정할 때 사용한다. 구현 - Originator : 상태를 가지고 있는 객체, 객체의 상태를 저장하고 복원을 할 수 있다. - Memento : 상태를 저장하는 객체, Originator 객체의 상태를 포착한다. - Caretaker : Memento를 관리하는 객체, Memento의 생성, 저장, 복원을 담당한다. 장점 - 객체 상태를 저장하고 복원하기 때문에 이전 상태로 쉽게 되돌릴 수 있다. (실행 취소, 다시 실행 기능) - Memento는 Originator의 .. 2024. 3. 1.
C++ - 중재자, 미디에이터 패턴 (Mediator Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 중재자, 미디에이터 패턴 (Mediator Pattern) - 행동 패턴 - 객체 간의 상호작용을 캡슐화하여 복잡한 통신과 제어를 한 곳으로 집중시키는 패턴 - 객체 간의 직접적인 통신을 방지하여 결합도를 낮춘다. 구현 - Mediator : 객체들 간의 상호작용을 관리하고 조정하는 주체, 중재자는 요청을 받아들이고 적절한 객체에 전달한다. - Colleague : 중재자를 통해 상호작용하는 객체, 다른 Colleague 객체와 직접 통신하지 않는다. 장점 - SRP(단일 책임 원칙), 다양한 Colleague간의 상호작용을 한 곳으로 추출한다. - OCP(개방-폐쇄 원칙), 기존의 Colleague를 변경하지 않고 .. 2024. 3. 1.
C++ - 플라이웨이트 패턴 (Flyweight Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 플라이웨이트 패턴 (Flyweight Pattern) - 구조 패턴 - 객체를 공유하여 메모리 사용량을 줄이고 성능을 향상시키기 위한 패턴 - 많은 수의 유사한 객체를 생성해야 할 때 사용된다. 구현 - Flyweight Interface : 플라이웨이트 객체들이 구현하는 인터페이스를 정의, 외부에서 사용될 메서드를 포함한다. - Flyweight Factory : 플라이웨이트 객체들을 생성하고 관리, 객체를 생성하거나 이미 생성된 객체를 재사용한다. - Flyweight : 중복 생성되는 객체의 부분을 나타내는 클래스, 외부와 내부로 나뉘며, 내부 상태는 공유된다. 장점 - 중복되는.. 2024. 3. 1.
C++ - 빌더 패턴 (Builder Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 이동 생성자 move constructor 빌더 패턴 (Builder Pattern) - 생성 패턴 - 객체 생성 과정을 추상화하여 복잡한 객체를 조립하는 패턴 - 객체를 생성하는 방법을 클라이언트로부터 숨기고, 생성 과정을 단계적으로 나눈다. 구현 - Builder : 객체를 생성하기 위한 인터페이스를 정의, 객체의 각 부분을 생성하기 위한 메서드가 포함된다. - ConcreteBuilder : Builder 인터페이스를 구현하여 실제로 객체를 생성한다. - Director : 객체를 생성하는 방법을 결정하고, Builder를 사용하여 객체를 조립한다. - Product : Bu.. 2024. 3. 1.
C++ - 브리지 패턴 (Bridge Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 브리지 패턴 (Bridge Pattern) - 구조 패턴 - 클래스의 집합을 두 개의 추상화와 구현으로 분리하는 패턴 - 인터페이스와 구현을 별도의 클래스로 분리하여 각각 독립적으로 변경할 수 있다. 구현 - Abstraction : 기능적 요구사항을 정의하는 인터페이스를 제공한다. - Implementation : Abstraction이 정의한 인터페이스를 실제로 구현한다. - RefinedAbstraction : Abstraction을 확장한 클래스, 추가적인 기능을 정의한다. - ConcreteImplementation : Implementation의 실제 구현이 된다. 장점 -.. 2024. 3. 1.
C++ - 방문자, 비지터 패턴 (Visitor Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 복합체, 컴포지트 패턴 - 클래스 다이어그램 그리기 방문자, 비지터 패턴 (Visitor Pattern) - 행동 패턴 - 객체의 구조와 동작을 분리하여 새로운 동작을 추가하는 패턴 - 어떤 클래스에 대해 특정 메서드를 분리하고 싶을 때 사용할 수 있다. 구현 - Visitor : 새로운 동작을 정의하는 인터페이스, 특정 작업을 수행하는 메서드가 정의된다. - Element : Visitor를 수용하는 인터페이스, accept 메서드로 Visitor를 받는다. - ConcreteVisitor : 실제로 새로운 동작을 구현한다. - ConcreteElement : Visitor가 새로운 동작을 수행하는 실제 객.. 2024. 2. 29.
C++ - 프로토타입 패턴 (Prototype Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 복사 생성자를 이용한 객체의 깊은 복사 프로토타입 패턴 (Prototype Pattern) - 생성 패턴 - 초기 객체 생성 비용이 많이 드는 경우 사용하는 패턴 - 객체를 생성할 때 기존 객체의 복사를 통해 생성한다. - 생성할 객체의 유형에 대한 세부 정보를 숨기면서 복잡한 객체를 만들 수 있는 방법을 제공한다. 구현 - Prototype : 복제될 객체의 인터페이스를 정의, 객체를 복사하는 메서드를 제공한다. - ConcretePrototype : 복사될 때 생성될 새로운 객체의 초기 상태를 가지게 된다. - 클라이언트는 Concrete Class의 구체적인 내용을 몰라도 객.. 2024. 2. 29.
C++ - 역할 사슬, CoR 패턴 (Chain of Responsibility Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 역할 사슬, CoR 패턴 (Chain of Responsibility Pattern) - 행동 패턴 - 요청을 보내는 객체와 요청을 처리할 수 있는 여러 객체 사이에 역할 사슬을 구성하는 패턴 - 요청을 처리하는 여러 개의 객체가 있는 경우, 요청을 처리할 객체를 결정할 수 있다. 구현 - Handler : 요청을 처리할 인터페이스와 다음 요청을 처리할 successor 참조를 제공한다. - ConcreteHandler : 실제로 요청을 처리하고, 처리하지 못하는 경우 successor에게 요청을 전달한다. - 클라이언트는 요청을 최초의 핸들러에게 전달한다. 장점 - SRP(단일 책임.. 2024. 2. 29.
C++ 디자인 패턴 C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 패턴 (Pattern) - 특정한 문제를 해결하기 위해 반복적으로 발생하는 문제와 그에 대한 해결책을 포괄하는 설계 또는 구조 컨텍스트 (Context) - 패턴이 적용되는 특정한 상황이나 환경 문제 (Problem) - 패턴이 적용되는 상황에서 발생하는 구체적인 어려움이나 요구사항 안티 패턴 (Anti-pattern) - SW 개발 과정에서 자주 발생하는 비효율적이거나 잘못된 걸계, 개발 또는 관리 관행 생성 패턴 (Creational Patterns) - 객체 생성 메커니즘에 관련된 패턴 - 객체 생성을 추상화하고, 시스템이 어떻게 객체를 생성하고 조합하는지에 대한 규칙을 제공한다. - 클라이언트와 클라이언트에서 .. 2024. 2. 28.
반응형