일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 사가 패턴
- spring batch
- Action Pattern
- Spring Cloud Netfilx Eureka
- 키클락
- Resilinece4j
- 체인 패턴
- The law of Demeter
- Transaction Pattern
- saga pattern
- zipkin
- TypeScript
- 스프링 배치
- spring cloud
- Parallel Old GC
- Java
- 스레드
- MSA
- 디자인패턴
- 배치
- thread
- JPA
- 디자인 패턴
- 타입스크립트
- 알고리즘
- Spring Boot Actuator
- 생산자 소비자 패턴
- Serial GC
- 멀티스레드
- java 정렬
- Today
- Total
목록Backend (77)
PSD( Private-Self-Development )
파사드 패턴? 파사드의 어원은 프랑스어(facade) 로 건물의 정면이라는 뜻이다. 라이브러리, 프레임워크, 다른 클래스, 서브 서비스 등 복잡한 서브 시스템에 대한 단순화된 인터페이스를 제공하는 구조적 디자인 패턴이다. 우리는 대부분 무의식적으로 파사드 패턴을 사용하고 있는 경우가 많다. 예를들어 네이버 로그인 API 호출을 위한 로직을 하나의 클래스에 모아놓고 이를 사용하는 곳에서는 이를 호출해서 사용하도록 하는 것도 파사드 패턴의 하나이다. 이처럼, 파사드 패턴은 생김새가 다양하다. 최소 지식 원칙 지키며 파사드 패턴을 적용하는 것이 좋다. 최소 지식 원칙 ? https://chjysm.tistory.com/60 최소 지식 원칙( 데메테르의 법칙 ) 최소 지식 복잡하게 얽혀 있는 서브 시스템의 어떤..
최소 지식 복잡하게 얽혀 있는 서브 시스템의 어떤 부분을 수정할 경우 관련된 다른 부분도 수정해야 하는 경우가 있다. 이때, 어느 하나를 수정하기 위해서 관련된 많은 정보를 알고 있어야 한다. 이처럼 어떤 작업을 할 때 많은 지식이 있어야 한다면 코드를 수정하기 힘들어진다. 이는 곧 진입 장벽이 되며, 이전 회사의 코드 또한 같은 문제를 가지고 있었다. 때문에 최소 지식만 적용해 객체의 사용 작용을 설정해야 한다. HOW 1. 객체의 메서드 호출 시 단순화하자. 불필요한 객체의 생성 루틴과 재호출을 코드에 삽입하여 코드의 비가독성과 복잡성을 증가시키지 말자. 2. 4가지 규칙을 잘 지키는 객체를 만들자 자기 자신만의 객체 사용 메서드에 전달된 매개변수 사용 메서드에서 생성된 객체 사용 객체에 속하는 메서..
장식자 패턴? 객체에 동적으로 기능을 추가하기 위해 구조를 개선하는 디자인 패턴이다. 복합체 패턴과 마찬가지로 동일한 인터페이스를 구현하여 투명성을 가지며 개방/폐쇄의 원칙을 추구한다. 래퍼 패턴으로도 불린다. 기능 추가를 위해서는 상속과 구성 두 가지 방법이 있다. 이 중 상속은 이전에도 기술하였듯이 객체 간 강력한 결합이 수반되기 때문에, 구성으로 기능 추가를 구현하는 것이 좋다. 상속의 문제점 상속은 정적 하나의 부모 클래스만 가질 수 있다. 강력한 결합 4가지 구성 요소 Component : 공통 적용 될 인터페이스 ConcreateComponent : 실 객체 이자 Component 구현체 Decorator : 장식자 인터페이스 ConcreateDecorator : 장식자 인터페이스 구현체 확장..
복합체 패턴? 객체를 트리 구조로 구성 하고, 이를 재귀적으로 순회하며 작업 하기 위한 패턴입니다. 4가지 구성 요소 Component : Composite 과 Leaf 에 공통적으로 적용되는 인터페이스 입니다. (투명성 제공을 위함) Composite(복합 객체) : 자식을 가지는 요소입니다. (ex. 폴더) Leaf(일반 객체) : 자식을 가지지 않는 요소입니다. (ex. 파일) Client : 복합체를 사용하는 곳 Composite 이든 Leaf 든 동일한 방식으로 사용 가능 하다. 투명성? 두 가지 서로 다른 구성 요소를 동일한 형태로 투명하게 사용하기 위해 일반화 작업을 실행한다. (주로, 동일한 추상 클래스나 인터페이스 를 상속 받는다.) 이러한 투명성은 사용자에게 동일한 방법으로 객체에 접근..
브리지 패턴? 객체의 확장성을 향상하기 위한 패턴으로, 확장을 객체간의 상속이 아닌 구현으로 처리하며, 객체에서 동작을 처리하는 구현부와 확장을 위한 추상부를 분리한다. 이 두개의 개별 계층 구조를 각각 독립적으로 개발한다. 이러한 브리지 패턴을 구현하기 위해서는 4개의 구성 요소 가 필요하다. Abstract 상위 추상부 상위 수준의 제어 논리 제공, 구현부에 의존하여 실제 하위 수준 작업 수행 RefinedAbstract 자식 추상부 (선택 사항) 제어 논리의 변형을 제공 Implementor 상위 구현부( Abstrct 에 포함 ) 공통적인 인터페이스 선언 추상부는 여기에 선언된 메서드를 통해서만 구현부와 소통할 수 있다. ConcreateImplementor 자식 구현부 플랫폼별 맞춤형 코드 작성..
왜? 솔루션 혹은 서비스 가 커지고 개발에 참여하는 인원과 소스 또한 커지기 마련이다. 이러한 상황에서 유지 보수성 및 원활한 일처리를 위해서는 디자인패턴을 잘 이해하고 적제 적소에 사용하는 것이 가장 중요하다. 디자인 패턴? 디자인 패턴이란 유지보수성 및 원할한 일처리를 위해 선배 개발자들이 고안하고 정리한 구조적 패턴의 모음집이다. 예를 들어, 공통된 기능을 가진 A, B, C 클래스를 하나의 인터페이스로 묶어서 이를 구현하도록 하여 클래스 간의 호환성 및 동일한 기능임을 보장하는 등의 일정한 패턴 이나 구조를 적용하여 이러한 장점을 이끌어 내는 것이 디자인 패턴이다. 디자인 패턴에는 크게 3가지 파트로 나뉜다. 생성 패턴 : 객체 생성에 관련된 디자인 패턴 구조 패턴 : 객체의 확장에 관련된 디자인..
어댑터 패턴? 호환 되지 않는 인터페이스 를 가지는 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴 이다. 인터페이스 간 호환성 기존 코드의 랩퍼 처리 중개 행동 어댑터 패턴의 장점 단일 책임 원칙 개방 패쇄 원칙 클라이언트는 인터페이스를 통해 어댑터 사용 시 기존 클라이언트 코드를 손상하지 않고 새로운 유형의 어댑터 추가 가능 느슨한 연결 방식으로 보다 많은 유연성을 확보할 수 있다. 프로그램이 실행되는 와중에도 객체 변경 가능 어댑터 패턴의 단점 새로운 인터페이스, 클래스 추가로 인한 복잡성 증가 어댑터가 새로운 메서드를 재구성하는 경우, 추가 코드가 필요하다. 어댑터 패턴 구현 @Getter @Setter public static class TypeA{ private String data; } ..
프로토타입 패턴? 보통은 객체 생성 시 new 키워드를 통해 자원을 새로 할당하여 생성하게 된다. 이때, 복합 객체 거나 생성 로직이 복잡한 경우, 생성할 때마다 이러한 리소스가 들어가 자원 낭비가 된다. 이러한 상황에서, 그때그때 새로 생성하는 것이 아닌 기존 데이터를 복사하여 사용하여 리소스 낭비를 줄이는 것이 프로토타입 패턴이다. 프로토타입 패턴의 장점 구현 클래스에 종속되지 않고 객체를 생성(복제)할 수 있다. 반복되는 초기화 코드를 적용하지 않는다. 복합 객체를 쉽게 생성할 수 있다. 프로토타입 패턴의 단점 순환 참조가 있는 복합 객체는 복제가 까다로울 수 있다. 프로토타입 패턴 구현 @Getter public class Computer implements Cloneable{ private St..