본문 바로가기
반응형

Design Pattern24

C++ - 프록시 패턴 (Proxy Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 변수 변경시 이벤트 발생 (C#) 프록시 패턴 (Proxy Pattern) - 구조 패턴 - 다른 객체에 대한 접근을 제어하거나 중재하는 역할을 하는 대리자(Proxy)를 제공하는 패턴 - 원본 객체에 대한 접근을 제어, 보안 검사, 로깅, 캐싱, 지연 로딩 등의 추가 기능을 제공할 수 있다. 구현 - Subject : 프록시와 실제 서비스에 대한 공통 인터페이스를 제공, 프록시를 실제 서비스와 동일하게 처리 - Real Subject : 프록시가 접근을 제어하거나 기능을 추가하는 대상, 실제 서비스 객체 - Proxy : 요청을 중개하고 제어하는 객체, 클라이언트는 프록시를 통해.. 2024. 2. 28.
C++ - 템플릿 메서드 패턴 (Template Method Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - virtual 키워드 - 헐리우드 원칙 템플릿 메서드 패턴 (Template Method Pattern) - 행동 패턴 - 알고리즘의 구조를 정의하는 패턴 - 알고리즘 구조는 유지하면서 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있다. 구현 - Template Method : 알고리즘의 구조를 정의한 메서드, final 등으로 재정의가 불가능하도록 정의 - Abstract Method : Template Method에서 정의한 구조의 일부 단계를 구체화하기 위해 하위 클래스에서 구현 - Hook : 하위 클래스에서 선택적으로 오버라이드 할 수 있도록 제공되는 메서드 장점 - .. 2024. 2. 26.
C++ - 퍼사드 패턴 (Facade Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 어댑터 패턴 (Adapter Pattern) - 클래스 다이어그램 그리기 - 최소 지식 원칙 퍼사드 패턴 (Facade Pattern) - 구조 패턴 - 복잡한 시스템 또는 서브시스템을 단순화된 인터페이스로 제공하는 패턴 - 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. - 클라이언트가 시스템의 복잡성을 알 필요 없이 간단한 인터페이스를 통해 시스템에 접근할 수 있다. 구현 - Subsystem : 퍼사드가 제공하는 인터페이스를 구현하는 여러 클래스 또는 모듈의 집합 - Facade : 클라이언트와 상호작용하는 단일 인터페이스를 제공, 복잡한 시스템 또는 서브시스템을 캡.. 2024. 2. 26.
C++ - 어댑터 패턴 (Adapter Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 어댑터 패턴 (Adapter Pattern) - 구조 패턴 - 호환되지 않은 두 개의 인터페이스 사이에 중간에서 어댑터를 두어 상호 작용을 하도록 하는 패턴 - 기존의 코드나 라이브러리를 변경하지 않고 새로운 코드나 라이브러리를 통합한다. 구현 - 타겟 (Target) : 클라이언트는 타겟 인터페이스를 통해 어댑터에 요청을 보낸다. - 어댑터 (Adapter) : 클라이언트가 호출하는 인터페이스를 실제로 구현하는 객체, 서비스 객체의 메서드 호출로 변환 - 어댑티 (Adaptee) : 어댑터가 클라이언트에게 제공하려는 기능을 정의하는 인터페이스 - 어댑터는 어댑티를 감싸서 클라이언트가.. 2024. 2. 24.
C++ - 커맨드 패턴 (Command Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 스마트 포인터 : unique_ptr 커맨드 패턴 (Command Pattern) - 행동 패턴 - 행동을 캡슐화하여 다른 객체로 전달하는 패턴 - 요청을 객체로 캡슐화하여 매개변수화된 메서드 호출, 메서드 실행 또는 연산을 지원한다. 구현 - CommandInterface : execute() 메서드와 그에 필요한 다른 메서드(undo 등)를 정의 - ConcreteCommand : Command 인터페이스를 구현하여 실제로 실행될 작업을 구현 - Invoker : 클라이언트로부터 커맨드 객체를 받아서 실행하는 클래스, 클라이언트와 커맨드를 분리하는 역할 - Receiver : .. 2024. 2. 23.
C++ - 상태, 스테이트 패턴 (State Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - friend로 private 멤버 출력하기 - 스마트 포인터 : unique_ptr 상태, 스테이트 패턴 (State Pattern) - 행동 패턴 - 객체의 상태에 따라 객체의 행동을 바꾸는 패턴 - 상태에 대한 행동을 캡슐화하여, 위임을 이용해 필요한 행동을 선택한다. - 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 구현 - State Class : 상태를 나타내는 추상 클래스 또는 인터페이스를 정의, 객체의 특정 상태에 따른 행위를 정의 - Context Class : 상태를 가지고 있는 객체를 나타내는 클래스. 상태 객체를 참조하고, 상태 변경 메서드 제공 - .. 2024. 2. 20.
C++ - 추상 팩토리 패턴 (Abstract Factory Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 팩토리 메서드 패턴 - 클래스 다이어그램 그리기 - 스마트 포인터 : unique_ptr - friend로 private 멤버 출력하기 추상 팩토리 패턴 (Abstract Factory Pattern) - 생성 패턴 - 관련 있는 객체들의 생성을 추상화하여 객체 생성을 캡슐화하는 방법을 제공하는 패턴 - 클라이언트가 구체적인 클래스를 알지 못해도, 해당 클래스와 상호작용을 할 수 있도록 도와준다. 구현 - Abstract Factory : 관련된 객체들의 집합을 생성하기 위한 인터페이스를 정의 - Concrete Factory : Abstract Factory 인터페이스를 구현하여 실제로 객체를 생성 - Ab.. 2024. 2. 14.
C++ - 팩토리 메서드 패턴 (Factory Method Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 스마트 포인터 : unique_ptr - 의존 역전 원칙 팩토리 메서드 패턴 (Factory Method Pattern) - 생성 패턴 - 객체를 생성하는 과정을 서브 클래스에서 결정할 수 있도록 하는 패턴 - 객체 생성에 대한 구체적인 구현을 서브 클래스로 미룬다. - 클라이언트는 객체 생성에 대한 구체적인 클래스를 알 필요 없이, 추상 클래스를 통해 인터페이스에만 의존할 수 있다. 구현 - 객체 생성을 처리하는 메서드가 있는 인터페이스나 추상 클래스를 생성한다. - 팩터리 메서드가 생성할 객체의 구상 클래스를 만든다. - 인터페이스나 추상 클래스를 구현하여 팩토리 클래스를 만든.. 2024. 2. 12.
C++ - 데코레이터 패턴 (Decorator Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 스마트 포인터 : unique_ptr - 템플릿으로 클래스 상속하기 데코레이터 (Decorator Pattern) - 구조 패턴 - 기존 객체의 동작을 수정하지 않고, 그 객체의 기능을 확장하거나 수정하는 패턴 - 런타임에 동적으로 객체의 기능을 추가하거나 수정할 수 있다. 구현 - Component : 데코레이터와 구체적인 컴포넌트를 동일한 타입으로 처리하는 추상 클래스 / 인터페이스 - ConcreteComponent : 기본 동작을 구현하는 컴포넌트 - Decorator : 컴포넌트를 상속하고, 동적으로 기능을 추가, 변경하는 메서드를 가지는 추상 클래스 / 인터페이스 - C.. 2024. 2. 10.
반응형