분류 전체보기 59

15. Facade - 단순한 창구를 만든다

15. Facade - 단순한 창구를 만든다 Facade 패턴은 객체 지향 소프트웨어 디자인 패턴 중 하나로, 서브시스템의 복잡성을 감소시키고 클라이언트와 서브시스템 간의 인터페이스를 단순화하는 목적으로 사용됩니다. 이 패턴은 클라이언트 코드가 서브시스템의 세부 사항을 알 필요 없이 서브시스템과 상호 작용할 수 있도록 합니다. Facade 패턴은 다음과 같이 작동합니다: Facade: 이는 클라이언트와 서브시스템 간의 중개자 역할을 하는 클래스입니다. Facade는 클라이언트 요청을 받아 서브시스템의 메서드를 호출하고 그 결과를 클라이언트에게 반환합니다. Facade는 서브시스템의 복잡성을 감추고 간단한 인터페이스를 제공하는 역할을 합니다. 서브시스템: 이는 복잡한 기능을 제공하는 클래스 또는 모듈의 집..

14. Chain of Responsibility - 책임을 떠넘긴다

14. Chain of Responsibility - 책임을 떠넘긴다 Chain of Responsibility 패턴은 객체 지향 소프트웨어 디자인 패턴 중 하나로, 요청을 처리하는 객체들의 연결된 체인을 만들어 처리 과정을 단순화하고 유연성을 제공하는 패턴입니다. 이 패턴은 요청을 만드는 객체와 요청을 처리하는 객체를 분리하여 객체 간의 결합도를 낮추고, 요청을 처리하는 객체를 동적으로 변경하거나 확장할 수 있도록 해줍니다. Chain of Responsibility 패턴은 주로 다음과 같은 상황에서 사용됩니다: 요청을 여러 단계로 나눠 처리해야 하는 경우. 요청을 처리할 수 있는 객체가 동적으로 변경되어야 하는 경우. 요청을 처리할 수 있는 객체를 동적으로 확장하고 조합해야 하는 경우. 패턴의 주요 ..

**13. Visitor - 데이터 구조를 돌아다니면서 처리한다

13. Visitor - 데이터 구조를 돌아다니면서 처리한다 Visitor 패턴은 객체 지향 소프트웨어 디자인 패턴 중 하나로, 객체의 구조와 동작을 분리시키는 데 사용됩니다. 주로 객체 구조 내에 있는 여러 유형의 객체를 방문하면서 특정 작업을 수행하거나 동작을 수행하기 위해 사용됩니다. 이 패턴은 객체 지향 언어에서 다형성을 활용하여 객체 간의 결합도를 낮추고 확장성을 높이는 데 도움이 됩니다. Visitor 패턴은 다음과 같은 주요 구성 요소로 구성됩니다: Visitor (방문자) 인터페이스: 방문자 패턴의 핵심 요소로, 여러 종류의 객체를 방문하면서 특정 작업을 수행하기 위한 메서드를 정의하는 인터페이스입니다. Visitor 인터페이스는 방문자가 어떤 객체를 방문할지에 대한 메서드를 정의합니다. ..

12. Decorator - 장식물과 내용물을 동일시 한다

12. Decorator - 장식물과 내용물을 동일시 한다 데코레이터 패턴(Decorator Pattern)은 객체 지향 디자인 패턴 중 하나로, 객체에 동적으로 추가 기능을 부여하거나 변경할 수 있도록 하는 구조적 패턴입니다. 이 패턴을 사용하면 기본 객체의 구조를 변경하지 않고 기능을 확장할 수 있으며, 서브클래스의 생성을 피하고 복잡한 클래스 계층 구조를 방지할 수 있습니다. 데코레이터 패턴은 다음과 같은 구성 요소로 이루어집니다: Component: 데코레이터 패턴의 핵심 인터페이스입니다. 이 인터페이스는 기본 객체와 데코레이터에 대한 추상화를 제공합니다. ConcreteComponent: Component 인터페이스를 구현한 구체적인 객체입니다. 이 객체에 새로운 기능을 추가하려는 대상이 됩니다..

카테고리 없음 2023.10.17

11. Composite - 그릇과 내용물을 동일시한다

11. Composite - 그릇과 내용물을 동일시한다 Composite 패턴은 객체 지향 소프트웨어 디자인에서 사용되는 구조적 디자인 패턴 중 하나로, 계층 구조로 이루어진 객체를 다루는 데 유용합니다. 이 패턴은 개별 객체와 객체의 컨테이너(그룹)를 동일한 인터페이스를 통해 다룰 수 있도록 합니다. 주로 트리 구조와 같은 계층 구조에서 사용됩니다. Composite 패턴은 다음의 주요 구성 요소로 이루어집니다: Component: Component는 인터페이스 또는 추상 클래스로 정의됩니다. 이는 개별 객체와 컨테이너 객체에 대한 공통 메서드를 정의합니다. 예를 들어, 그룹과 개별 항목을 나타내는 객체는 모두 Component 인터페이스를 구현하거나 상속받습니다. Leaf: Leaf 클래스는 개별 객..

카테고리 없음 2023.10.16

10. Strategy - 알고리즘을 모두 바꾼다

10. Strategy - 알고리즘을 모두 바꾼다 스트래티지(Strategy) 패턴은 소프트웨어 디자인에서 사용되는 객체 지향 디자인 패턴 중 하나로, 특정한 작업을 수행하는 알고리즘을 정의하고, 해당 알고리즘을 독립적으로 교체하여 사용할 수 있도록 하는 패턴입니다. 이 패턴은 행위(Behavioral) 디자인 패턴 중 하나로 분류됩니다. 스트래티지 패턴의 핵심 아이디어는 알고리즘을 사용하는 클라이언트와 알고리즘 자체를 분리하는 것입니다. 이렇게 하면 클라이언트는 실행 중에 다양한 알고리즘을 선택할 수 있고, 새로운 알고리즘을 추가하거나 기존 알고리즘을 변경하는 데 용이해집니다. 스트래티지 패턴의 주요 구성 요소는 다음과 같습니다: Context (콘텍스트): 클라이언트가 사용하는 알고리즘을 정의하고, ..

카테고리 없음 2023.10.13

*9. Bridge - 기능 계층과 구현 계층을 나눈다

9. Bridge - 기능 계층과 구현 계층을 나눈다 브리지 패턴(Bridge Pattern)은 객체 지향 디자인 패턴 중 하나로, 구현부와 추상을 분리하여 두 부분이 독립적으로 변화할 수 있게 하는 패턴입니다. 이 패턴은 객체의 추상화와 구현을 분리하여 두 부분을 독립적으로 확장 및 변화시킬 수 있도록 도와주며, 특히 다양한 기능을 지원하기 위해 클래스 계층 구조를 확장하지 않고도 새로운 클래스를 추가할 수 있도록 해줍니다. 브리지 패턴의 주요 요소는 다음과 같습니다: Abstraction (추상화): 이 부분은 클라이언트 코드가 상호작용하는 주요 인터페이스를 나타냅니다. 추상화는 구현부와 분리되어 구체적인 구현부를 변경하지 않고도 클라이언트와 상호작용할 수 있도록 합니다. Implementor (구현..

**8. Abstract Factory - 관련 부품을 조합하여 제품을 만든다

8. Abstract Factory - 관련 부품을 조합하여 제품을 만든다 Abstract Factory 패턴은 객체 생성과 관련된 디자인 패턴 중 하나로, 객체 생성 프로세스를 추상화하여 서로 관련된 객체들을 생성하는 인터페이스를 제공합니다. 이 패턴은 클라이언트 코드가 구체적인 클래스를 직접 생성하는 것을 피하고, 추상적인 팩토리를 통해 객체를 생성하도록 합니다. 이를 통해 시스템의 유연성과 확장성을 향상시킬 수 있습니다. Abstract Factory 패턴의 주요 구성 요소는 다음과 같습니다: Abstract Factory (추상 팩토리): 인터페이스로 정의되며, 관련된 객체를 생성하기 위한 메서드들을 선언합니다. 이 팩토리 인터페이스는 구체적인 팩토리 클래스들이 구현해야 합니다. Concrete ..

*7. Builder - 복잡한 인스턴스를 조립한다

7. Builder - 복잡한 인스턴스를 조립한다 Builder 디자인 패턴은 객체를 생성하는 복잡한 과정을 캡슐화하고, 객체의 다양한 구성 옵션을 설정하기 위한 패턴 중 하나입니다. 이 패턴은 Java와 같은 객체 지향 프로그래밍 언어에서 매우 유용하며, 객체의 가독성과 유지보수성을 향상시킬 수 있습니다. Builder 디자인 패턴을 구현하려면 다음과 같은 주요 구성 요소가 필요합니다: 대상 객체 (Target Object): 빌더 패턴을 사용하여 생성하려는 복잡한 객체를 나타냅니다. 이 객체는 일반적으로 많은 설정 옵션을 가지고 있습니다. 빌더 인터페이스 (Builder Interface): 대상 객체를 생성하는 데 필요한 메서드를 정의하는 인터페이스입니다. 이 인터페이스는 객체를 구성하는 다양한 메..

*6. Prototype - 복사해서 인스턴스를 만든다

6. Prototype - 복사해서 인스턴스를 만든다 클래스에서 인스턴스를 생성하는 대신 인스턴스로부터 다른 인스턴스를 생성하는 Prototype 패턴. 다음과 같은 경우에는 클래스로부터 인스턴스를 만드는 대신 인스턴스를 복사해서 새 인스턴스를 만든다. 1. 종류가 너무 많아 클래스로 정리할 수 없는 경우 취급할 오브젝트가 너무 많아서, 하나하나 다른 클래스로 만들면 소스 파일을 많이 작성해야 하는 경우 2. 클래스로부터 인스턴스 생성이 어려운 경우 생성하고 싶은 인스턴스가 복잡한 과정을 거쳐 만들어지는 경우 3. 프레임워크와 생성하는 인스턴스를 분리하고 싶은 경우 인스턴스를 생성하는 프레임워크를 특정 클래스에 의존하지 않게 하고 싶은 경우 이런 경우에는 클래스 이름을 지정해서 인스턴스를 만드는 것이 아..