Design Pattern 3
-
Upload
daniel-lim -
Category
Technology
-
view
156 -
download
1
Transcript of Design Pattern 3
![Page 2: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/2.jpg)
목차• Singleton Pattern• Factory Pattern• Abstract Factory Pattern• Builder Pattern• Prototype Pattern
![Page 3: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/3.jpg)
Builder Pattern-1- What is Builder Pattern?-
● 객체를 생성하는 디자인 패턴의 한 종류● Abstract Factory Pattern과 Factory Pattern은 생성하려는 객체에 속성이 많을 경우 문제 발생
➔ 생성시 많은 전달 값이 필요➔ 옵션 전달 인자에 대해서 null 값으로 전달➔ 객체가 복잡하거나 무거울 경우 Factory class들 역시 복잡
하여 혼란을 야기함● Builder Pattern 은 많은 옵션 전달 값에 대한 객체 생성을 한 발자국씩 처리
● 결과적으로 원하는 객체를 전달 받음
![Page 4: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/4.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/5.jpg)
Builder Pattern-3- How can make? -
Computer 생성자
ComputerBuilder class
Computer Class
![Page 6: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/6.jpg)
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](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/7.jpg)
Prototype Pattern-1- What is Prototype Pattern? -
● 생성 디자인 패턴 중의 하나로 객체를 생성하여 제공● 객체 생성에 비용이 많이 들거나
많은 시간 또는 자원이 필요할 경우이미 비슷한 객체가 존재할 경우 사용
● 원본 객체를 복사하여 새로운 객체를 생성하고 필요한 변경을 추가
● 이 패턴은 java에서 제공하는 cloning을 이용하여 객체를 복사
![Page 8: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/8.jpg)
Prototype Pattern-2- How can make? -
I. DB에서 기초데이터를 읽어 들인 객체를 생성
II.그 객체에 몇가지 사항이 변경된 데이터가 우리 프로그램에 필요 한 경우 ✗ 객체를 new 키워드를 이용하여 매번 필요한
데이터를 읽어 들이는 것✔ 객체의 clone 메소드를 구현 하여 기초 데이터
가 설정된 객체를 얻는 것
![Page 9: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/9.jpg)
Prototype Pattern-3- How can make? -
I. Cloneable을 상속 받은 객체 생성 II. 최초 1회만 데이터를 로드 한 이후 객체를 복제 하여 사용
![Page 10: Design Pattern 3](https://reader036.fdocument.pub/reader036/viewer/2022080906/55a68cfe1a28abcc7d8b4662/html5/thumbnails/10.jpg)
참고
● 출처 : http://www.journaldev.com/1827/java-design-patterns-example-tutorial#singleton-pattern
• GITHUB : https://github.com/lahuman/study4DesignPattern.git