본문 바로가기
반응형

개발/Architecture & Design Pattern37

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.
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++ - 헐리우드 원칙 (The Hollywood Principle) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 템플릿 메서드 패턴 헐리우드 원칙 (The Hollywood Principle) - Don't call us, we'll call you - 높은 수준의 모듈 간의 상호작용을 관리하기 위해 사용되는 원칙 - 상위 모듈이 하위 모듈에 의존할 때, 상위 모듈은 직접적으로 하위 모듈에 의존하지 말아야 한다. - 두 모듈 모두 추상화에 의존해야 한다. - 하위 모듈이 상위 모듈을 호출하지 않아야 하며, 상위 모듈이 추상화된 인터페이스를 통해 하위 모듈을 호출해야 한다. 의존성 부패 (Dependency Rot) - 여러 구성 요소 간의 의존성이 증가하는 현상 - 상위 모듈이 하위 모듈에, 하위 모듈이 상위 모듈에 서.. 2024. 2. 26.
C++ - 퍼사드 패턴 (Facade Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 어댑터 패턴 (Adapter Pattern) - 클래스 다이어그램 그리기 - 최소 지식 원칙 퍼사드 패턴 (Facade Pattern) - 구조 패턴 - 복잡한 시스템 또는 서브시스템을 단순화된 인터페이스로 제공하는 패턴 - 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. - 클라이언트가 시스템의 복잡성을 알 필요 없이 간단한 인터페이스를 통해 시스템에 접근할 수 있다. 구현 - Subsystem : 퍼사드가 제공하는 인터페이스를 구현하는 여러 클래스 또는 모듈의 집합 - Facade : 클라이언트와 상호작용하는 단일 인터페이스를 제공, 복잡한 시스템 또는 서브시스템을 캡.. 2024. 2. 26.
C++ - 최소 지식 원칙 (The Principle of Least Knowledge) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 퍼사드 패턴 최소 지식 원칙 (The Principle of Least Knowledge) = 디미터의 법칙 (Law of Demeter) - 객체가 다른 객체와 직접적으로 상호 작용하는 것보다는 가능한 다른 객체들과의 관련을 최소화해야 한다. - 객체는 해당 객체와 직접 관련된 정보만을 알아야 하고, 다른 객체의 내부 동작에 대해 세부 사항을 알 필요가 없다. - 객체와 다른 객체는 인터페이스를 통해 간접적으로 상호 작용을 유지해야 한다. 먼저 최소 지식 원칙 위반 사례를 보자. #include using namespace std; class Engine { public: void work() { cout 2024. 2. 25.
C++ - 어댑터 패턴 (Adapter Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 어댑터 패턴 (Adapter Pattern) - 구조 패턴 - 호환되지 않은 두 개의 인터페이스 사이에 중간에서 어댑터를 두어 상호 작용을 하도록 하는 패턴 - 기존의 코드나 라이브러리를 변경하지 않고 새로운 코드나 라이브러리를 통합한다. 구현 - 타겟 (Target) : 클라이언트는 타겟 인터페이스를 통해 어댑터에 요청을 보낸다. - 어댑터 (Adapter) : 클라이언트가 호출하는 인터페이스를 실제로 구현하는 객체, 서비스 객체의 메서드 호출로 변환 - 어댑티 (Adaptee) : 어댑터가 클라이언트에게 제공하려는 기능을 정의하는 인터페이스 - 어댑터는 어댑티를 감싸서 클라이언트가.. 2024. 2. 24.
반응형