1. 의미 인스턴스 생성과 관련된 패턴으로 인스턴스를 생성할 때 동일한 프로세스를 통해 생성할 수 있게 도와주는 패턴 2. 작성 방법 public interface TourPlanBuilder { TourPlanBuilder nightsAndDays(int nights, int days); // nights와 days는 같이 생성 TourPlanBuilder title(String title); TourPlanBuilder startDate(LocalDate localDate); TourPlanBuilder whereToStay(String whereToStay); TourPlanBuilder addPlan(int day, String plan); TourPlan getPlan(); } public cl..
1. 의미 서로 관련있는 여러 객체를 만들어주는 인터페이스 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스를 만들고, 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴 구체적으로 어떤 클래스의 인스턴스를 사용하는지 감출 수 있다. 팩토리 메서드와 비슷해보이지만, 초점은 팩토리를 사용하는 클라이언트쪽으로 바라보고 있다. 클라이언트(호출) 코드를 인터페이스 기반으로 코딩할 수 있게 도와주는 패턴 2. 작성 방법 public interface Anchor { } public class WhiteAnchor implements Anchor { } public interface Wheel { } public class WhiteWheel implements Wheel { } public ..
1. 의미 인스턴스(객체) 생성에 대한 책임을 구체적인 클래스가 아닌 추상적인 인터페이스의 메소드를 이용하는 패턴 변경에는 닫혀야있어야 하며 확장에는 열려있어야하는 원칙(OCP)을 준수해야한다 2. 작성 방법 인터페이스와 인스턴스 생성용 메소드를 정의한다 JAVA9 이상의 경우 인터페이스에서 private 메소드를 정의할 수 있으나, JAVA8 버전의 경우는 인터페이스에 private 메소드를 정의할 수 없다. JAVA8을 사용한다면 abstract 클래스를 이용하여 필요한 메소드를 정의한다. public interface ShipFactory { default Ship orderShip(String name, String email) { Ship ship = createShip(); sendEmailT..
1. 의미 시스템 런타임이나 환경설정과 같이 오직 하나의 인스턴스만 만들어 제공할때 사용하는 패턴. 2. 작성 방법 new 키워드를 사용하여 인스턴스를 생성하지 못하도록 막는다. static 메서드를 통해 인스턴스를 가져오는 하나의 통로를 만든다. public class Settings { private static Settings instance = null; private Settings() { } public static Settings getInstance() { if (instance == null) { instance = new Settings(); } return instance; } } public class App { public static void main(String[] args) ..