반응형 [C++ 마스터] Day 29: C++에서의 디자인 패턴 디자인 패턴은 소프트웨어 설계에서 자주 발생하는 문제를 해결하기 위한 재사용 가능한 솔루션입니다. 디자인 패턴은 크게 세 가지 유형으로 분류됩니다: 생성 패턴(Creational Patterns), 구조 패턴(Structural Patterns), 행위 패턴(Behavioral Patterns). 1. 생성 패턴 (Creational Patterns)생성 패턴은 객체 생성 메커니즘을 다루며, 객체 생성의 유연성과 재사용성을 향상시킵니다. 1.1 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 클래스의 인스턴스를 하나만 만들고, 그 인스턴스에 대한 전역적인 접근을 제공합니다.#include #include class Singleton {private: static Singleton* in.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 14: 디자인 패턴 심화 - 템플릿 메소드 패턴 (Template Method Pattern) 템플릿 메소드 패턴 (Template Method Pattern)템플릿 메소드 패턴은 상위 클래스에서 알고리즘의 골격을 정의하고, 하위 클래스에서 그 알고리즘의 일부 단계를 구체적으로 구현하도록 하는 패턴입니다. 이를 통해 알고리즘의 구조는 변경하지 않고, 세부 단계를 변경할 수 있습니다. 템플릿 메소드 패턴의 특징알고리즘의 골격 정의: 알고리즘의 기본 구조를 상위 클래스에서 정의합니다.단계의 구체적 구현: 알고리즘의 세부 단계를 하위 클래스에서 구현합니다.코드 재사용: 중복 코드를 상위 클래스에 모아서 코드 재사용성을 높입니다.템플릿 메소드 패턴의 구조AbstractClass (추상 클래스): 알고리즘의 골격을 정의하고, 구체적 단계를 하위 클래스에서 구현하도록 합니다.ConcreteClass (구체적.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 13: 디자인 패턴 심화 - 커맨드 패턴 (Command Pattern) 커맨드 패턴 (Command Pattern)커맨드 패턴은 요청을 객체의 형태로 캡슐화하여 요청자와 수행자 간의 의존성을 줄이는 패턴입니다. 이는 요청을 큐에 저장하거나, 로그로 기록하거나, 되돌릴 수 있는 작업을 구현할 수 있도록 합니다. 커맨드 패턴의 특징요청 캡슐화: 요청을 객체 형태로 캡슐화하여 요청자와 수행자를 분리합니다.커맨드 객체: 요청을 실행하는 메서드를 포함하는 객체입니다.되돌리기 가능: 실행된 요청을 되돌리거나 재실행할 수 있습니다.커맨드 패턴의 구조Command (커맨드): 실행 메서드를 정의하는 인터페이스ConcreteCommand (구체적 커맨드): 실제 실행될 작업을 구현하는 클래스Invoker (호출자): 커맨드를 실행하는 역할Receiver (수신자): 실제 작업을 수행하는 객.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 11: 디자인 패턴 심화 - 옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern)옵저버 패턴은 행위 패턴 중 하나로, 객체 간의 일대다 관계를 정의합니다. 한 객체의 상태 변화가 다른 객체들에 자동으로 통지될 수 있도록 합니다. 이를 통해 객체들 간의 느슨한 결합을 유지하면서도 이벤트 기반 프로그래밍을 할 수 있습니다. 옵저버 패턴의 특징일대다 관계: 하나의 주체(Subject) 객체가 다수의 옵저버(Observer) 객체에 상태 변화를 통지합니다.느슨한 결합: 주체와 옵저버는 서로 독립적으로 동작하며, 주체는 옵저버가 누구인지 알 필요가 없습니다.이벤트 기반: 상태 변화가 발생할 때 자동으로 통지가 이루어집니다.옵저버 패턴의 구조Subject (주체): 상태를 가지고 있으며, 상태 변화 시 옵저버에게 통지합니다.Observer (옵저버).. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 12: 디자인 패턴 심화 - 데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴 (Decorator Pattern)데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가할 수 있도록 하는 구조 패턴입니다. 이 패턴을 사용하면 서브클래싱 없이도 객체의 기능을 확장할 수 있습니다. 데코레이터 패턴은 기본 객체와 그 객체의 데코레이터를 동일한 인터페이스로 취급하여 기능을 확장합니다. 데코레이터 패턴의 특징동적 기능 확장: 객체의 기능을 동적으로 확장할 수 있습니다.개방-폐쇄 원칙: 기존 코드의 수정 없이 새로운 기능을 추가할 수 있습니다.유연한 설계: 상속 대신 합성을 사용하여 기능을 확장합니다.데코레이터 패턴의 구조Component (구성 요소): 기본 객체 인터페이스 또는 추상 클래스ConcreteComponent (구체적 구성 요소): 기본 객체의 구체적 구현Decor.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 9: 디자인 패턴 심화 - 팩토리 패턴 (Factory Pattern) 팩토리 패턴 (Factory Pattern)팩토리 패턴은 객체 생성 로직을 별도의 팩토리 클래스로 분리하여, 객체 생성의 유연성과 확장성을 높이는 디자인 패턴입니다. 이는 객체 생성 방식을 캡슐화하여 클라이언트 코드가 객체 생성 방법에 의존하지 않도록 합니다. 팩토리 패턴의 종류단순 팩토리 패턴 (Simple Factory Pattern)팩토리 메서드 패턴 (Factory Method Pattern)추상 팩토리 패턴 (Abstract Factory Pattern)단순 팩토리 패턴 (Simple Factory Pattern)단순 팩토리 패턴은 객체 생성을 위한 메서드를 제공하는 클래스를 정의합니다. 이 클래스는 클라이언트 코드 대신 객체를 생성합니다. 단순 팩토리 패턴 예제#include #include .. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 10: 디자인 패턴 심화 - 전략 패턴 (Strategy Pattern) 전략 패턴 (Strategy Pattern)전략 패턴은 행위 패턴 중 하나로, 알고리즘을 각각의 클래스에 캡슐화하여, 클라이언트가 알고리즘을 독립적으로 변경할 수 있도록 합니다. 이를 통해 알고리즘의 변화가 클라이언트 코드에 영향을 미치지 않도록 합니다. 전략 패턴의 특징알고리즘 캡슐화: 알고리즘을 독립적인 클래스로 캡슐화하여 교체가 용이합니다.유연성 제공: 런타임에 알고리즘을 동적으로 변경할 수 있습니다.클래스 분리: 클라이언트 코드와 알고리즘 클래스를 분리하여 코드의 가독성과 유지보수성을 높입니다.전략 패턴의 구조Context: 전략을 사용하는 클래스Strategy: 알고리즘을 정의하는 인터페이스ConcreteStrategy: 구체적인 알고리즘을 구현하는 클래스전략 패턴 UML 다이어그램+------.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 8: 디자인 패턴 심화 - 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 특정 클래스의 인스턴스가 하나만 존재하도록 보장하고, 그 인스턴스에 대한 전역 접근점을 제공하는 디자인 패턴입니다. 이는 전역 상태를 관리하거나, 리소스를 공유해야 하는 상황에서 유용합니다. 싱글톤 패턴의 특징유일한 인스턴스: 클래스의 인스턴스가 하나만 존재함을 보장합니다.전역 접근점: 유일한 인스턴스에 대한 전역 접근을 제공합니다.게으른 초기화: 인스턴스가 처음 필요할 때 생성됩니다. 기본 싱글톤 패턴 구현싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 여기서는 가장 일반적인 구현 방법을 소개합니다. 싱글톤 클래스 정의#include #include class Singleton {private: static Singleton* ins.. 2024. 8. 1. 이전 1 다음 반응형