일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 멀티스레드
- MSA
- Serial GC
- Resilinece4j
- Spring Cloud Netfilx Eureka
- 체인 패턴
- 디자인패턴
- 알고리즘
- 디자인 패턴
- Spring Boot Actuator
- 타입스크립트
- 생산자 소비자 패턴
- The law of Demeter
- Java
- saga pattern
- 스레드
- spring batch
- 사가 패턴
- Action Pattern
- 스프링 배치
- Transaction Pattern
- JPA
- TypeScript
- spring cloud
- thread
- 배치
- zipkin
- Parallel Old GC
- java 정렬
- 키클락
- Today
- Total
목록Backend/디자인패턴 (18)
PSD( Private-Self-Development )
왜? 솔루션 혹은 서비스 가 커지고 개발에 참여하는 인원과 소스 또한 커지기 마련이다. 이러한 상황에서 유지 보수성 및 원활한 일처리를 위해서는 디자인패턴을 잘 이해하고 적제 적소에 사용하는 것이 가장 중요하다. 디자인 패턴? 디자인 패턴이란 유지보수성 및 원할한 일처리를 위해 선배 개발자들이 고안하고 정리한 구조적 패턴의 모음집이다. 예를 들어, 공통된 기능을 가진 A, B, C 클래스를 하나의 인터페이스로 묶어서 이를 구현하도록 하여 클래스 간의 호환성 및 동일한 기능임을 보장하는 등의 일정한 패턴 이나 구조를 적용하여 이러한 장점을 이끌어 내는 것이 디자인 패턴이다. 디자인 패턴에는 크게 3가지 파트로 나뉜다. 생성 패턴 : 객체 생성에 관련된 디자인 패턴 구조 패턴 : 객체의 확장에 관련된 디자인..
어댑터 패턴? 호환 되지 않는 인터페이스 를 가지는 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴 이다. 인터페이스 간 호환성 기존 코드의 랩퍼 처리 중개 행동 어댑터 패턴의 장점 단일 책임 원칙 개방 패쇄 원칙 클라이언트는 인터페이스를 통해 어댑터 사용 시 기존 클라이언트 코드를 손상하지 않고 새로운 유형의 어댑터 추가 가능 느슨한 연결 방식으로 보다 많은 유연성을 확보할 수 있다. 프로그램이 실행되는 와중에도 객체 변경 가능 어댑터 패턴의 단점 새로운 인터페이스, 클래스 추가로 인한 복잡성 증가 어댑터가 새로운 메서드를 재구성하는 경우, 추가 코드가 필요하다. 어댑터 패턴 구현 @Getter @Setter public static class TypeA{ private String data; } ..
프로토타입 패턴? 보통은 객체 생성 시 new 키워드를 통해 자원을 새로 할당하여 생성하게 된다. 이때, 복합 객체 거나 생성 로직이 복잡한 경우, 생성할 때마다 이러한 리소스가 들어가 자원 낭비가 된다. 이러한 상황에서, 그때그때 새로 생성하는 것이 아닌 기존 데이터를 복사하여 사용하여 리소스 낭비를 줄이는 것이 프로토타입 패턴이다. 프로토타입 패턴의 장점 구현 클래스에 종속되지 않고 객체를 생성(복제)할 수 있다. 반복되는 초기화 코드를 적용하지 않는다. 복합 객체를 쉽게 생성할 수 있다. 프로토타입 패턴의 단점 순환 참조가 있는 복합 객체는 복제가 까다로울 수 있다. 프로토타입 패턴 구현 @Getter public class Computer implements Cloneable{ private St..
빌더 패턴? 추상 팩토리 패턴을 확장하여 복잡한 생성 절차를 가지는 복합 객체 생성을 위한 생성 패턴입니다. 기존 팩토리, 팩토리 메서드, 추상 팩토리 패턴으로는 단일 객체는 생성 가능하지만, 복합 객체는 생성 불가능 복합 객체? 단일 객체? 단일 객체란 하나의 클래스로 생성된 객체를 의미하고, 반대로 복합 객체란 여러 클래스로 구성된 객체를 의미합니다. 단일 객체의 확장은 주로 상속인데, 강력한 상하 결합 관계와 불필요한 행위가 포함되는 단점이 있습니다.. 객체 지향에서는 이러한 단점 개선을 위해 의존성 주입을 사용하여 복합 객체 사용을 권장합니다. 빌더 패턴 장점 객체 생성 단계 설정 가능 코드 재사용성 증가 단일 책임 원칙 빌더 패턴 단점 여러 클래스를 생성해야 하므로 복잡성 증가 빌더 패턴 구현 ..
추상 팩토리 패턴 생성 메서드만을 추상화하는 팩토리 메서드 패턴에서 더 나아가, 부모클래스 자체를 추상화 하여, 이를 구현하는 여러 개의 자식 팩토리 클래스(객체 모음)를 만드는 패턴이다. 추상 팩토리 패턴의 장점 팩토리에서 생성되는 객체들의 상호 호환성 보장 단일 책임 원칙 개방/폐쇠 원칙 다형성 충족 추상 팩토리 패턴의 단점 관리해야 하는 객체가 많아지므로 공통적으로 적용되어야 하는 내용이 수정되어야 할 경우, 공수가 더 들어간다. 구조가 복잡해진다. 팩토리 메서드 패턴 과의 차이점 추상화 대상 자식 클래스 팩토리 메서드 생성 메서드를 추상화 1개의 자식 생성 클래스 만을 생성하며, 생성 메서드를 오버라이딩 하여 인자 값을 통한, 여러 클래스를 생성한다. 추상 팩토리 부모 클래스 자체를 추상화 모음 ..
팩토리 메서드 패턴? 팩토리 패턴의 확장 패턴으로 팩토리 패턴 과 템플릿 메서드 패턴이 결합된 패턴이다. 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하고 자식 클래스 들이 생성될 객체들의 유형을 변경 할 수 있도록 하는 생성 패턴이다. 팩토리 메서드 패턴의 장점 객체간의 느슨한 결합 구현 단일 책임의 원칙 개방/폐쇠의 원칙 => 객체 재사용성이 높다 팩토리 메서드 패턴의 단점 패턴을 구현하기 위함 자식 클래스를 구현해야 하므로 코드가 복잡해 질 수 있다. => 기존 생성 클래스의 계층 구조에 패턴을 도입하는게 BEST! 팩토리 메서드 구현 public abstract class Factory { public Product creat( String brand ){ return createPr..
싱글톤 패턴? 객체 인스턴스를 1개만 유지 및 사용하기 위한 디자인 패턴 싱글톤 패턴의 장점 무분별한 인스턴스 생성을 방지하기 때문에, 메모리낭비를 줄일 수 있다. 동일 자원 공유 및 사용 인스턴스가 1개만 존재함을 보증 싱글톤 패턴의 단점 객체지향의 단일 책임 원칙을 위반하므로 남용해서는 안된다. 클래스 본연의 목적을 해결하기 위한 본연의 책임 중복 객체 생성 방지를 위한 책임 자식 클래스 생성 이 불가능하다. 유연성이 떯어진다. 싱글톤 패턴 구현 volatile를 이용한 개선된 DCL(Double-Checked-Locking) Singleton 패턴 (jdk 1.5 이상에서 사용) - jdk 버전에 의존적 public class A { private volatile static A instance;..
팩토리 패턴이란? 가장 기본이 되는 디자인 패턴 객체 간의 클래스 생성으로 생기는 결합 관계를 낮추기 위해 객체 생성을 다른 클래스나 메서드에게 위임하도록 구현하는 것이다. 팩토리 패턴 장점 사용과 생성을 분리하는 과정에서 중복 코드가 정리되는 효과를 가진다. 결합도가 낮아지며 유연성과 확장성이 증가된다. 어떤 객체를 생성할지 모르는 초기 단계 코드에 유용하다. => 객체를 먼저 호출하여 사용 후 쉽게 수정 할 수 있기 때문 팩토리 패턴 단점 객체의 생성을 위임하기 위한 새로운 객체가 필요하고 때문에, 관리해야할 클래스가 늘어난다 => 단순 팩토리 패턴( 메서드 팩토리 패턴 )을 사용하면 해소 가능하다. 팩토리 패턴 구현 public class Main{ public static void main(Str..