Design Patterns/생성(Creational)

반응형
반응형
Design Patterns/생성(Creational)

[Prototype]프로토타입 패턴

Prototype Pattern 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 복제 기능을 갖추고 있는 기존 인스턴스를 프로토타입으로 사용해 새 인스턴스를 만들 수 있다. 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 GithubIssue - GithubIssue 객체에 .clone()메소드를 구현하여 현재의 객체를 복사하여 새로운 인스턴스를 만들 수 있다. 이때 .clone()은 Object 클래스에 기본으로 존재하는 메소드로, 이를 사용하기 위해서 Cloneable 인터페이스를 상속받는다. - deep copy를 비교할 수 있는 equals 메소드를 직접 구현해주었다. public class GithubIssue implements Cloneable { private int id; ..

Design Patterns/생성(Creational)

[Builder]빌더패턴

Builder Pattern 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 (복잡한) 객체를 만드는 프로세스를 독립적으로 분리할 수 있다. 구현방법 App public class App { public static void main(String[] args) { TourDirector director = new TourDirector(new DefaultTourBuilder()); TourPlan tourPlan = director.cancunTrip(); TourPlan tourPlan1 = director.longBeachTrip(); } } TourPlan & Detail Plan public class TourPlan { private String title; private int ..

Design Patterns/생성(Creational)

[Abstract factory]추상팩토리

Abstract Factory 서로 관련있는 여러 객체를 만들어 주는 인터페이스 구체적으로 어떤 클래스의 인스턴스를 (contrate product)를 사용하는지 감출 수 있다. 클라이언트 코드에서 구체적인 클래스의 의존성을 제거한다. Ship public class Ship { private String name; private String color; private String logo; private Wheel wheel; private Anchor anchor; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return col..

Design Patterns/생성(Creational)

[FactoryMethod]장점과 단점

Factory Method 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다. 다양한 구현체(Product)가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공할 수 있다. 확장에는 열려 있고 변경에 닫혀 있는 구조 Ship이라는 객체가 있을 때 이를 상속받는 WhiteShip, BlackShip이 있고, Ship을 생성하는 ShipFactory는 BlackshipFactory, WhiteshipFactory를 상속한다. 팩토리 메소드를 사용하는 경우 새로운 객체가 만들어질 때마다 해당 생성 factory를 생성하여 ShipFactory를 상속받도록하여 객체 생성(확장)에 유연성을 준다. Ship public class Ship { private String n..

Design Patterns/생성(Creational)

[Singleton]4. 자바와 스프링에서 찾아보는 패턴

By 백기선.코딩으로 학습하는 GoF의 디자인 패턴 Singleton 1. 개념 및 구현 방법 2. 패턴 구현 깨트리는 방법 3. 안전하고 단순하게 구현하는 방법 4. 자바와 스프링에서 찾아보는 패턴 실무에서는 어떻게 쓰이나? - 스프링에서 빈의 스코프 중에 하나로 싱글톤 스코프. - 자바 java.lang.Runtime - 다른 디자인 패턴(빌더, 퍼사드, 추상 팩토리 등) 구현체의 일부로 쓰이기도 한다. public class RunTimeExample { public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); System.out.println("runtime = " + runtime.maxMemory()); S..

Design Patterns/생성(Creational)

[Singleton]3. 안전하고 단순하게 구현하는 방법

By 백기선.코딩으로 학습하는 GoF의 디자인 패턴 Singleton 1. 개념 및 구현 방법 2. 패턴 구현 깨트리는 방법 3. 안전하고 단순하게 구현하는 방법 4. 자바와 스프링에서 찾아보는 패턴 1. enum을 사용했을 때 장점과 단점 - 단점 : 미리 만들어준다. 상속을 받을 수 없다. 상속이 필요한 경우에는 static inner class를 활용한다. - 장점 : 리플렉션, 역/직렬화에 모두 대응이 가능하다.

emojiyeon
'Design Patterns/생성(Creational)' 카테고리의 글 목록