본문 바로가기
반응형

C++93

C++ - 템플릿으로 클래스 상속하기 (Mixin Inheritance) C, C++ 전체 링크 참고 - 데코레이터 패턴 클래스 CBA가 클래스 A, B, C의 모든 메서드를 사용하려면 상속을 받으면 된다. class CBA : public A, public B, public C { }; 예제 코드는 다음과 같다. #include using namespace std; class A { public: void methodA() { cout 2024. 3. 6.
C++ - CRTP로 인터페이스 만들기 (Interface with Curiously Recurring Template Pattern) C, C++ 전체 링크 참고 - 형변환 연산자 - 가상 함수 테이블 C++의 인터페이스는 순수 가상 함수를 이용해서 만들 수 있다. class Base { public: virtual void interface() = 0; // 순수 가상 함수 void commonOperation() { cout 2024. 3. 6.
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.
반응형