일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- Proxy
- 알고리즘
- JavaScript
- MySQL
- Heap
- MSA
- react
- Java
- 자바
- IT
- c언어
- 운영체제
- mongoDB
- 디자인 패턴
- Kafka
- Data Structure
- 백준
- 컴퓨터구조
- redis
- Galera Cluster
- design pattern
- Spring
- spring webflux
- 자료구조
- Algorithm
- 네트워크
- C
- JPA
- OS
- Today
- Total
목록디자인 패턴 (14)
시냅스
Composite Pattern 부분과 전체에 대한 복합 객체의 트리구조를 나타낼 수 있음 클라이언트가 개별 객체와 복합 객체를 동일하게 다룰 수 있는 인터페이스를 제공 재귀적인 구조 기본 객체는 복합 객체에 포함이 되고, 복합 객체 역시 또 다른 복합 객체에 포함될 수 있다. 클라이언트 코드는 기본객체와 복합객체에 대한 일관된 프로그래밍을 할 수 있다. 기본 객체가 증가하여도 전체 객체의 코드에 영향을 주지 않는다. 새로운 요소의 추가가 편리하고 범용성 있는 설계가 가능하다. Component 전체와 부분 객체에서 공통적으로 사용할 인터페이스 선언 전체와 부분 객체에서 공통으로 사용할 기능 구현 전체 클래스가 부분요소들을 관리하기 위해 필요한 인터페이스 선언 Leaf 집합 관계에서 다른 객체를 포함할 ..
Command Pattern 요청을 객체로 만들어 전달한다. 요청을 기록으로 남겨 취소도 가능하도록 한다. 클라이언트 서버간의 프로토콜로 사용할 수 있다. 명령 자체를 객체화 하여 여러 다른 객체에 명령이 전달되거나 명령이 조합될 수도 있다. 새로운 프로토콜이 추가되기 쉽다. 부가적인 정보가 많은 경우 비효율적일 수 있다. Command 각 명령이 수행할 메서드 선언 ConcreteCommand 실제 명령이 호출되도록 execute 구현 Client ConcreteCommand 객체를 생성하고 처리 객체로 정의 Invoker Command 처리를 수행할 것을 요청 Receiver Command를 처리함 구현 package command; import java.util.ArrayList; import ja..
Adapter Pattern 클라이언트에서 사용하던 방식대로 호출하여 사용할 수 있도록 조정해주는 기능 서로 일치하지 않는 인터페이스를 변경하지 않고 중간에서 호출하여 사용할 수 있도록 제공 상속을 활용하는 Adapter 객체 합성의 방법으로 구현하는 Adapter Adapter를 사용함으로써 클라이언트가 사용하는 방식은 동일하면서 여러 기능이 제공될 수 있다. Target 클라이언트가 사용할 인터페이스를 정의하고 있는 클래스 Client Target 인터페이스를 사용하는 객체 Adaptee 실제의 새롭거나 적용될 기능이 제공되는 클래스 Adapter Target 인터페이스에 Adaptee의 인터페이스를 맞춰주는 클래스 구현 package adapter; interface Print { // adapte..
Mediator Pattern 객체간의 상호 작용을 하나의 객체에서 캡슐화하여 처리 UI 프로그래밍에서 많이 사용되는 방법으로 Widget 간의 상호 처리를 서로간에 처리하는 것이 아닌 한 객체가 전담하여 처리하도록 하는 방식 객체 서로간의 메세지를 전달할 일이 있을 때도 중재자를 두고 전달할 수 있음 N:N 의 관계를 1:N의 관계로 바꿀 수 있음 객체 지향 방법론에서는 객체의 관련된 처리는 객체 내부에서 하는 것이 맞지만, 그렇게 하면 상호작용의 급증이 발생하고 시스템의 변경이 어려움 Mediator 객체가 상호작용을 제어하고 조율하게 함, 각 객체는 다른 객체의 참조자는 알 필요 없이 Mediator만 알면 됨 Mediator Colleague 객체와 교류하는데 필요한 인터페이스를 정의 Concre..
Bridge Pattern 기능의 계층과 구현의 계층을 분리함 추상화와 구현을 분리하여 각각을 독립적으로 변경할 수 있게 함 기능의 확장과 구현의 확장을 따로 계층화 함 기능에 대한 여러가지 구현을 다양하게 적용할 수 있음 기능과 구현이 혼자하면 상속의 관계가 복잡해짐 두 계층을 분리하고 서로의 사이에 다리(Bridge)가 필요함 Abstraction (List) 추상화 개념의 상위 클래스이고 객체 구현자 (Implementor)에 대한 참조자를 관리 RefinedAbstraction (Stack, Queue) 추상화 개념의 확장된 기능을 정의 Implementor (AbstractList) 구현 클래스에 대한 선언을 제공 하위 클래스가 구현해야 하는 기능들을 선언한다. Implementor와 Abstr..
Abstract Factory Pattern 여러 제품굼을 하나의 Set으로 생성하는 패턴 구체적인 클래스를 생성하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 추상화된 인터페이스 팩토리를 제공하고 상황에 따라 그에 맞는 인스턴스들이 생성되도록 한다. 생성되고 구성되고 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 하나 이상의 제품군들 중 하나를 선택하여 시스템을 설정해야 하고 한 번 구성한 제품을 다른 것으로 대체할 수 있을 때 AbstractFactory 개념적 제품에 대한 객체를 생성하는 오퍼레이션 인터페이스를 정의한다. ConcreteFactory 구체적인 제품에 대한 객체를 생성하는 오퍼레이션을 구현한다. AbstractProduc..
반복자 패턴 Iterator Pattern 객체 요소들의 내부 표현방식을 공개하지 않고, 객체에서 되지 않은, 외부에서 객체에 순회하는 객체를 만든다. 내부에서 객체의 순차적인 제공을 하지 않음 순회 구현 방식이 다르더라도 동일한 방식(메서드)로 순회 할 수 있게 제공 여러 리스트 객체에 대한 동일한 방식으로 순회하는 방법을 제공하기 위해 순회하는 객체를 따로만듬 e.g. Java Collection Framework의 Iterator Iterator 요소에 접근하고 순회하는데 필요한 메서드 제공 ConcreteIterator Iterator에 정의된 인터페이스를 구현하는 클래스 Aggregate Iterator 객체를 생성하는 인터페이스 정의 순회할 요소를 가지고 있다. ConcreteAggregate..
옵저버 패턴 Observer Pattern 객체 사이에 일대다의 의존 관계가 있고, 어떤 객체의 상태변하게 되면 그 객체에 의존성을 가진 다른 객체들이 변화의 통지(notify or update)를 받고 자동으로 갱신될 수 있게 함 dependent, publish-subscribe 하나의 객체에 연동되는 여러 객체 집합이 있을 때 변화에 대한 일관성은 유지하고, 객체간의 결합도는 낮게하기 위한 패턴 느슨한 결합 Loose coupling : 느슨하게 결합되어 있다는 것은 상호작용을 하지만 서로 잘 모른다는 것 변화에 관심이 있는 객체에 대한 가정없이 통보될 수 있도록 해야 함 주로 data - view 의 관계에서 사용됨 log와 handler들의 관계. (file, console, 등등) Subjec..
템플릿 메소드 패턴 Template Method Pattern 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스에 위임 Operation 에 알고리즘의 기본 골격 구조를 정의하고 구체적인 단계는 서브클래스에 정의한다 추상화된 함수를 통해서 알고리즘의 일부 단계를 정의함으로써 템플릿 메소드의 처리순서를 정할 수 있다. AbstractClass 서브 클래스들이 반드시 구현해야 하는 알고리즘 처리 단계 내의 기본 오퍼레이션이 무엇인지를 정의한다. 서브 클래스에서 이들 오퍼레이션들을 구현한다. Hook method : 추상 클래스 내에 선언(declaration)되어 있는 메소드이지만, 기본적인 내용만 있거나 아무 내용도 들어있지 않음 template method는 final 키워드를 통해..
전략 패턴 Strategy Pattern 정책이나 알고리즘을 교체하여 사용할 수 있음 다양한 알고리즘이 존재하면 이들 각각을 하나의 클래스로 캡슐화하여 알고리즘의 대체가 가능하도록 한다. 클라이언트와 독립적인 다양한 알고리즘을 적용할 수 있도록 한다. 사용자가 모르고 있는 데이터를 사용하여 여러 정책들이 반영될 수 있도록 구현 여러 정책이 수행되어야 하는 조건들 (if-else, switch) 문이 없어질 수 있다 Strategy 정책이 수행해야 하는 기능들을 인터페이스로 선언 ConcreteStrategy Strategy에 선언된 여러 기능들을 구현 다양한 정책들이 구현될 수 있음 Context 어떤 ConcreteStrategy 가 수행 될 것인지에 따라 정책을 선택한다 Strategy에 선언된 메서..