반응형 개발/Architecture & Design Pattern41 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. UML - 유스케이스 다이어그램 (Use Case Diagram) Architecture & Design Pattern 전체 링크 유스케이스 다이어그램 (Use Case Diagram)- 시스템의 사용자 또는 액터(Actor)와 시스템이 제공하는 기능(Use Case) 간의 상호작용을 보여준다.- 시스템의 내부 요소와 외부 요소를 결합하고, 사용자의 특정 요구 사항을 강조한다.- 시스템의 상황을 묘사하고, 시스템의 청사진으로 작동할 수 있다.- 사용자를 위한 다이어그램이므로 시스템의 기능이나 세부정보를 나타내지는 않는다. 유스케이스 (Use Case)- 새로 만들어야 할 시스템이나 소프트웨어 변경 사항에 대한 요구 사항을 찾아내는 방법 - 사용자 또는 시스템 외부에서 시스템이 수행할 수 있는 작업 또는 시나리오- 각 유스케이스는 시스템이 사용자의 요구사항을 어떻게 충.. 2024. 2. 23. C++ - 커맨드 패턴 (Command Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 스마트 포인터 : unique_ptr 커맨드 패턴 (Command Pattern) - 행동 패턴 - 행동을 캡슐화하여 다른 객체로 전달하는 패턴 - 요청을 객체로 캡슐화하여 매개변수화된 메서드 호출, 메서드 실행 또는 연산을 지원한다. 구현 - CommandInterface : execute() 메서드와 그에 필요한 다른 메서드(undo 등)를 정의 - ConcreteCommand : Command 인터페이스를 구현하여 실제로 실행될 작업을 구현 - Invoker : 클라이언트로부터 커맨드 객체를 받아서 실행하는 클래스, 클라이언트와 커맨드를 분리하는 역할 - Receiver : .. 2024. 2. 23. UML - 클래스 다이어그램 (Class Diagram) Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 클래스 다이어그램 (Class Diagram) - 시스템의 클래스와 클래스들 간의 관계를 보여준다. - 코드 수준의 모든 구성 요소들을 속성들과 오퍼레이션들과 함께 나열한다. - 제한된 타입 정보를 제공하며, 메서드를 어떻게 작성해야 할지를 나타내지는 않는다. - Use Case의 명사가 클래스가 되며, 동사들은 메서드가 될 수 있다. 구조 클래스 다이어그램은 다음과 같은 구조를 가지고 있다. (클래스 이름 / 속성 / 오퍼레이션) (참고 : 오퍼레이션은 realization이 아닌 선언 정도, 메서드는 특정 언어로 구현된 실제 코드를 의미) attribute 앞의 기호는 visibility를 나타낸다. +.. 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. 이전 1 2 3 4 5 다음 반응형