본문 바로가기

GoF의 디자인 패턴14

빌더(Builder) 패턴 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 (복잡한) 객체를 만드는 프로세스를 독립적으로 분리할 수 있다. 구현 방법 장점과 단점 장점 만들기 복잡한 객체를 순차적으로 만들 수 있다. 복잡한 객체를 만드는 구체적인 과정을 숨길 수 있다. 동일한 프로세스를 통해 각기 다르게 구성된 객체를 만들 수도 있다. 불완전한 객체를 사용하지 못하도록 방지할 수 있다. 단점 원하는 객체를 만들려면 빌더부터 만들어야 한다. 구조가 복잡해진다. (트레이드 오프) 실무 적용 사례 자바 Stream.Buidler API StringBuilder, StringBuffer 롬복 @Builder 스프링 UriComponentsBuilder MockMvcWebClientBuilder Builder 로 끝나는 클래스.. 2022. 1. 8.
추상 팩토리 패턴 서로 관련 있는 여러 객체를 만들어주는 인터페이스 구체적으로 어떤 클래스의 인스턴스(concreate product)를 사용하는지 감출 수 있다. 구현 방법 클라이언트 코드에서 구체적인 클래스의 의존성을 제거한다. 팩토리 메서드 패턴과 비교 비슷한 점 둘 다 구체적인 객체 생성 과정을 추상화한 인터페이스를 제공한다. 다른 점 관점의 차이 팩토리 메소드 패턴은 “팩토리를 구현하는 방법 (inheritance)”에 초점을 둔다. 추상 팩토리 패턴은 “팩토리를 사용하는 방법 (composition)”에 초점을 둔다. 목적의 차이 팩토리 메소드 패턴은 구체적인 객체 생성 과정을 하위 또는 구체적인 클래스로 옮기는 것이 목적이다. 추상 팩토리 패턴은 관련 있는 여러 객체를 구체적인 클래스에 의존하지 않고 만들 수.. 2022. 1. 6.
팩토리 메소드(Factory method) 패턴 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다. 다양한 구현체 (Product)가 있고, 그중에서 특정한 구현체를 만들 수 있는 다양한 팩토리 (Creator)를 제공할 수 있다. 구현 방법 확장에 열려있고 변경에 닫혀있는 구조로 만든다. 팩토리 메소드 패턴을 적용했을 때의 장점은? 단점은? 장점: 객체지향 원칙 중 개방 폐쇄 원칙(OCP)을 적용할 수 있다. 단점: 패토리 메서드 패턴을 적용하기 전보다 클래스의 수가 많아진다. 하지만 클래스별로 단일 책임의 관점에서는 오히려 책임 분리가 되기 때문에 큰 문제가 되지 않는다고 생각한다. “확장에 열려있고 변경에 닫혀있는 객체 지향 원칙”을 설명하세요. “확장에 열려 있다”는 의미는 새로운 변경사항이 생겼을 때 유연하게 코드를 추가, 수정할 수 .. 2022. 1. 4.
싱글톤(Singleton) 패턴 인스턴스를 오직 한 개만 제공하는 클래스 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러 개 일 때 문제가 생길 수 있는 경우가 있다. 인스턴스를 오직 한 개만 만들어 제공하는 클래스가 필요하다. 구현 방법 1 private 생성자에 static 메서드 public class Settings { private static Settings instance; private Settings() { } public static Settings getInstance() { if (instance == null) { instance = new Settings(); } return instance; } } 생성자를 private으로 만든 이유 외부에서 생성자 사용을 못하게 하여 new를 사용한 인스턴스화.. 2021. 12. 29.