Design Pattern 3

10
Design Pattern-3 Creational Design Pattern-2 임광규 ([email protected])

Transcript of Design Pattern 3

Page 1: Design Pattern 3

Design Pattern-3

Creational Design Pattern-2임광규

([email protected])

Page 2: Design Pattern 3

목차• Singleton Pattern• Factory Pattern• Abstract Factory Pattern• Builder Pattern• Prototype Pattern

Page 3: Design Pattern 3

Builder Pattern-1- What is Builder Pattern?-

● 객체를 생성하는 디자인 패턴의 한 종류● Abstract Factory Pattern과 Factory Pattern은 생성하려는 객체에 속성이 많을 경우 문제 발생

➔ 생성시 많은 전달 값이 필요➔ 옵션 전달 인자에 대해서 null 값으로 전달➔ 객체가 복잡하거나 무거울 경우 Factory class들 역시 복잡

하여 혼란을 야기함● Builder Pattern 은 많은 옵션 전달 값에 대한 객체 생성을 한 발자국씩 처리

● 결과적으로 원하는 객체를 전달 받음

Page 4: Design Pattern 3

Builder Pattern-2- How can make? -

I.먼저 static nested class를 생성 II.외부 클래스의 전달인자를 복사하여 Builder class를

생성III.Builder class의 생성자는 모든 필수 전달인자를 받

도록 생성IV.Builder class는 옵션인자에 대한 메소드를 제공

이 메소드는 생성된 객체에 옵션 값을 추가 한 후에 리턴

V.마지막으로 build() 메소드를 제공 이 메소드는 클라이언트가 요청하는 객체를 생성하여 리턴클라이언트의 생성자는 builder를 전달인자로 받는 private 으로 설정

Page 5: Design Pattern 3

Builder Pattern-3- How can make? -

Computer 생성자

ComputerBuilder class

Computer Class

Page 6: Design Pattern 3

Builder Pattern-4- Where use Builder Pattern? -

• JDK에서 Bilder Pattern 사용 예제➔ Java.lang.StringBuilder#append() - unsynchronized

non-static method 에서는 성능 및 효율이 좋음➔ Java.lang.StringBuffer#append() - synchronized

static 멤버 혹은 메소드에서는 동기화 제공으로 안정성 확보

➔ 참고 :http://javahungry.blogspot.com/2013/06/difference-between-string-stringbuilder.html

Page 7: Design Pattern 3

Prototype Pattern-1- What is Prototype Pattern? -

● 생성 디자인 패턴 중의 하나로 객체를 생성하여 제공● 객체 생성에 비용이 많이 들거나

많은 시간 또는 자원이 필요할 경우이미 비슷한 객체가 존재할 경우 사용

● 원본 객체를 복사하여 새로운 객체를 생성하고 필요한 변경을 추가

● 이 패턴은 java에서 제공하는 cloning을 이용하여 객체를 복사

Page 8: Design Pattern 3

Prototype Pattern-2- How can make? -

I. DB에서 기초데이터를 읽어 들인 객체를 생성

II.그 객체에 몇가지 사항이 변경된 데이터가 우리 프로그램에 필요 한 경우 ✗ 객체를 new 키워드를 이용하여 매번 필요한

데이터를 읽어 들이는 것✔ 객체의 clone 메소드를 구현 하여 기초 데이터

가 설정된 객체를 얻는 것

Page 9: Design Pattern 3

Prototype Pattern-3- How can make? -

I. Cloneable을 상속 받은 객체 생성 II. 최초 1회만 데이터를 로드 한 이후 객체를 복제 하여 사용

Page 10: Design Pattern 3

참고

● 출처 : http://www.journaldev.com/1827/java-design-patterns-example-tutorial#singleton-pattern

• GITHUB : https://github.com/lahuman/study4DesignPattern.git