일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Parallel Old GC
- 타입스크립트
- The law of Demeter
- Transaction Pattern
- 키클락
- zipkin
- JPA
- 멀티스레드
- 체인 패턴
- thread
- 배치
- 사가 패턴
- java 정렬
- spring cloud
- 디자인패턴
- 스레드
- MSA
- Spring Boot Actuator
- Action Pattern
- Serial GC
- 생산자 소비자 패턴
- 스프링 배치
- 디자인 패턴
- Java
- Spring Cloud Netfilx Eureka
- Resilinece4j
- TypeScript
- 알고리즘
- spring batch
- saga pattern
- Today
- Total
목록Backend/디자인패턴 (18)
PSD( Private-Self-Development )
책임 연쇄 패턴? 요청을 핸들러들의 체인에 따라 전달하고 처리하는 행동 디자인 패턴이다. ex ) 로그인 요청이 들어왔을 때, 순차적인 A 검증, B 검증, C 검증 중 B 검증에 실패한 경우 C 검증은 진행하지 않아야 한다. 이때, 책임 연쇄 패턴을 적용하여 같은 Interface 를 구현한 각각의 핸들러들의 체인으로 구성하면 유지보수성이 향상된다. 책임 연쇄 패턴의 구성 요소 Handler 모든 ConcreteHanlers 에 적용되는 공통 인터페이스 보통은 요청 처리용 단일 메서드만 포함되지만 때로는 체인의 다음 핸들러를 세팅하기 위한 메서드를 구현하는 경우도 있다. BaseHandler 선택적 클래스 ConcreteHanlers 에 공통적으로 적용되는 코드를 구현한다. 다음 핸들러에 대한 참조를 ..
방문자 패턴? 공통된 객체의 데이터 구조와 처리 알고리즘을 분리하는 패턴이다. 예를 들어 a,b,c 객체에 동일한 데이터 처리 알고리즘을 적용해야 하는데 개방/폐쇄 원칙을 지키기 위해 기존 객체에 알고리즘 로직을 중복으로 추가하는 것 대신, 방문자 패턴을 적용하면 된다. 방문자 패턴의 구조 Element : 요소는 방문자 를 수락하는 인터페이스 이다. ConcreteElement : 구상 요소는 요소에서 선언한 수락 메서드를 구현한 구현체 이다. 호출을 적절한 방문자 메서드로 리다이렉트 한다. Visitor : 방문자는 구상요소들을 인수로 사용 할 수 있는 방문자 메서드들의 집합을 선언한다. ConcreteVisitor : 비지터 인터페이스의 구현체 각 구상 요소 클래스들에 맞춤으로 제작된 방문자 메서드..
명령 패턴? 행동의 호출을 객체로 캡슐화하여 실행하는 행동 패턴이다. Action Pattern 이나 Transaction Pattern 으로 도 불린다. 명령 패턴의 특징 매개변수 동작을 객체화하여 매개변수 형태로 전달한다. 전달 받은 객체를 바로 실행하는 것이 아니라 명령 객체로 프로퍼티에 저장한 후, 임의의 시점에서 일괄 실행한다. 시점 제어 작업의 요청과 처리를 분리하고 요청하는 작업들을 객체로 캡슐화한다. 이러한 객체의 실제 동작과 호출 실행 부분을 분리하면 동작의 실행 시점을 제어 할 수 있다. 동작 객체를 저장해놓고 필요 시점에 별도로 실행하는 식( Java Transaction 의 동작 방식을 생각하면 된다. ) 복구 동작 취소 처리를 할 수 있다. 저장 명령 실행 중 오류가 생기는 경우 ..
플라이웨이트 패턴? 각 객체를 그때 그때 생성하는 것이 아닌 하나의 객체를 공유 사용하여 자원 소모를 줄이는 패턴이다. 말 그대로 가벼운 무게 즉 자원 소모가 적다는 뜻 여기서 플라이웨이트 패턴으로 공유되는 객체는 "본질적 상태"를 가진 객체여야 하고 이를 "본질적 공유" 라 한다. 본질적 상태? 부가적 상태? 본질적 상태란 어떠한 변경도 없이 객체를 있는 그대의 상태 즉 불변성을 만족하는 상태 부가적 상태란 반대로 상태값에 따라 객체가 달라지는 것 가변성 플라이웨이트 패턴 장점 자원 소모를 줄일 수 있다. 플라이웨이트 패턴 단점 코드가 복잡해진다. 플라이웨이트 패턴의 구현 public interface SharedObject { void print(); } public class SharedObject..
파사드 패턴? 파사드의 어원은 프랑스어(facade) 로 건물의 정면이라는 뜻이다. 라이브러리, 프레임워크, 다른 클래스, 서브 서비스 등 복잡한 서브 시스템에 대한 단순화된 인터페이스를 제공하는 구조적 디자인 패턴이다. 우리는 대부분 무의식적으로 파사드 패턴을 사용하고 있는 경우가 많다. 예를들어 네이버 로그인 API 호출을 위한 로직을 하나의 클래스에 모아놓고 이를 사용하는 곳에서는 이를 호출해서 사용하도록 하는 것도 파사드 패턴의 하나이다. 이처럼, 파사드 패턴은 생김새가 다양하다. 최소 지식 원칙 지키며 파사드 패턴을 적용하는 것이 좋다. 최소 지식 원칙 ? https://chjysm.tistory.com/60 최소 지식 원칙( 데메테르의 법칙 ) 최소 지식 복잡하게 얽혀 있는 서브 시스템의 어떤..
장식자 패턴? 객체에 동적으로 기능을 추가하기 위해 구조를 개선하는 디자인 패턴이다. 복합체 패턴과 마찬가지로 동일한 인터페이스를 구현하여 투명성을 가지며 개방/폐쇄의 원칙을 추구한다. 래퍼 패턴으로도 불린다. 기능 추가를 위해서는 상속과 구성 두 가지 방법이 있다. 이 중 상속은 이전에도 기술하였듯이 객체 간 강력한 결합이 수반되기 때문에, 구성으로 기능 추가를 구현하는 것이 좋다. 상속의 문제점 상속은 정적 하나의 부모 클래스만 가질 수 있다. 강력한 결합 4가지 구성 요소 Component : 공통 적용 될 인터페이스 ConcreateComponent : 실 객체 이자 Component 구현체 Decorator : 장식자 인터페이스 ConcreateDecorator : 장식자 인터페이스 구현체 확장..
복합체 패턴? 객체를 트리 구조로 구성 하고, 이를 재귀적으로 순회하며 작업 하기 위한 패턴입니다. 4가지 구성 요소 Component : Composite 과 Leaf 에 공통적으로 적용되는 인터페이스 입니다. (투명성 제공을 위함) Composite(복합 객체) : 자식을 가지는 요소입니다. (ex. 폴더) Leaf(일반 객체) : 자식을 가지지 않는 요소입니다. (ex. 파일) Client : 복합체를 사용하는 곳 Composite 이든 Leaf 든 동일한 방식으로 사용 가능 하다. 투명성? 두 가지 서로 다른 구성 요소를 동일한 형태로 투명하게 사용하기 위해 일반화 작업을 실행한다. (주로, 동일한 추상 클래스나 인터페이스 를 상속 받는다.) 이러한 투명성은 사용자에게 동일한 방법으로 객체에 접근..
브리지 패턴? 객체의 확장성을 향상하기 위한 패턴으로, 확장을 객체간의 상속이 아닌 구현으로 처리하며, 객체에서 동작을 처리하는 구현부와 확장을 위한 추상부를 분리한다. 이 두개의 개별 계층 구조를 각각 독립적으로 개발한다. 이러한 브리지 패턴을 구현하기 위해서는 4개의 구성 요소 가 필요하다. Abstract 상위 추상부 상위 수준의 제어 논리 제공, 구현부에 의존하여 실제 하위 수준 작업 수행 RefinedAbstract 자식 추상부 (선택 사항) 제어 논리의 변형을 제공 Implementor 상위 구현부( Abstrct 에 포함 ) 공통적인 인터페이스 선언 추상부는 여기에 선언된 메서드를 통해서만 구현부와 소통할 수 있다. ConcreateImplementor 자식 구현부 플랫폼별 맞춤형 코드 작성..