SlideShare uma empresa Scribd logo
1 de 10
Design Pattern-3
Creational Design Pattern-2
임광규
(lahuman@daum.net)
목차
•
Singleton Pattern
•
Factory Pattern
•
Abstract Factory Pattern
•
Builder Pattern
•
Prototype Pattern
Builder Pattern-1
- What is Builder Pattern?-
●
객체를 생성하는 디자인 패턴의 한 종류
●
Abstract Factory Pattern과 Factory Pattern은 생
성하려는 객체에 속성이 많을 경우 문제 발생
➔
생성시 많은 전달 값이 필요
➔
옵션 전달 인자에 대해서 null 값으로 전달
➔
객체가 복잡하거나 무거울 경우 Factory class들 역시 복잡
하여 혼란을 야기함
●
Builder Pattern 은 많은 옵션 전달 값에 대한 객체
생성을 한 발자국씩 처리
●
결과적으로 원하는 객체를 전달 받음
Builder Pattern-2
- How can make? -
I.먼저 static nested class를 생성
II.외부 클래스의 전달인자를 복사하여 Builder class를
생성
III.Builder class의 생성자는 모든 필수 전달인자를 받
도록 생성
IV.Builder class는 옵션인자에 대한 메소드를 제공
이 메소드는 생성된 객체에 옵션 값을 추가 한 후에 리턴
V.마지막으로 build() 메소드를 제공
이 메소드는 클라이언트가 요청하는 객체를 생성하여 리턴
클라이언트의 생성자는 builder를 전달인자로 받는 private 으로 설정
Builder Pattern-3
- How can make? -
Computer 생성자
ComputerBuilder class
Computer Class
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
Prototype Pattern-1
- What is Prototype Pattern? -
●
생성 디자인 패턴 중의 하나로 객체를 생성하여 제공
●
객체 생성에 비용이 많이 들거나
많은 시간 또는 자원이 필요할 경우
이미 비슷한 객체가 존재할 경우 사용
●
원본 객체를 복사하여 새로운 객체를 생성하고 필요한
변경을 추가
●
이 패턴은 java에서 제공하는 cloning을 이용하여 객체
를 복사
Prototype Pattern-2
- How can make? -
I. DB에서 기초데이터를 읽어 들인 객체를 생성
II.그 객체에 몇가지 사항이 변경된 데이터가 우리
프로그램에 필요 한 경우
✗
객체를 new 키워드를 이용하여 매번 필요한
데이터를 읽어 들이는 것
✔
객체의 clone 메소드를 구현 하여 기초 데이터
가 설정된 객체를 얻는 것
Prototype Pattern-3
- How can make? -
I. Cloneable을 상속 받은 객체 생성 II. 최초 1회만 데이터를 로드 한 이후
객체를 복제 하여 사용
참고
●
출처 :
http://www.journaldev.com/1827/java-design-patterns
• GITHUB : https://github.com/lahuman/
study4DesignPattern.git

Mais conteúdo relacionado

Mais procurados

[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
NAVER D2
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
 

Mais procurados (20)

[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
 
Ngui3 5 5 localization
Ngui3 5 5 localizationNgui3 5 5 localization
Ngui3 5 5 localization
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법
 
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝
 
Electron mainprocess
Electron mainprocessElectron mainprocess
Electron mainprocess
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
Share some development
Share some developmentShare some development
Share some development
 
Vuejs를이용한서비스구축
Vuejs를이용한서비스구축Vuejs를이용한서비스구축
Vuejs를이용한서비스구축
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1
 
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
[부스트캠프 Tech Talk] 이정현_Github Workflow 활용하기
 
vuetiful korea 발표자료
vuetiful korea 발표자료vuetiful korea 발표자료
vuetiful korea 발표자료
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Akka actor model
Akka actor modelAkka actor model
Akka actor model
 

Destaque

블랙보드 개발 중인 기능
블랙보드 개발 중인 기능블랙보드 개발 중인 기능
블랙보드 개발 중인 기능
미나 최
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
Markus Christen
 
Publisher subscriber pattern
Publisher subscriber patternPublisher subscriber pattern
Publisher subscriber pattern
DaeMyung Kang
 

Destaque (20)

Learn design pattern-1
Learn design pattern-1Learn design pattern-1
Learn design pattern-1
 
Team10:TenTen for blackboard
Team10:TenTen for blackboardTeam10:TenTen for blackboard
Team10:TenTen for blackboard
 
블랙보드 개발 중인 기능
블랙보드 개발 중인 기능블랙보드 개발 중인 기능
블랙보드 개발 중인 기능
 
Pattern and EA
Pattern and EAPattern and EA
Pattern and EA
 
Publish Subscriber messaging pattern
Publish Subscriber messaging patternPublish Subscriber messaging pattern
Publish Subscriber messaging pattern
 
Design pattern study 6 command pattern
Design pattern study 6 command patternDesign pattern study 6 command pattern
Design pattern study 6 command pattern
 
Scalable system design patterns
Scalable system design patternsScalable system design patterns
Scalable system design patterns
 
Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴
 
Observer pattern dragor
Observer pattern dragorObserver pattern dragor
Observer pattern dragor
 
Api design for c++ pattern
Api design for c++ patternApi design for c++ pattern
Api design for c++ pattern
 
Design patterns 스터디 -strategy패턴
Design patterns 스터디 -strategy패턴Design patterns 스터디 -strategy패턴
Design patterns 스터디 -strategy패턴
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Design pattern study 4 factory pattern _ by dragor0123
Design pattern study 4 factory pattern _ by dragor0123Design pattern study 4 factory pattern _ by dragor0123
Design pattern study 4 factory pattern _ by dragor0123
 
Publisher subscriber pattern
Publisher subscriber patternPublisher subscriber pattern
Publisher subscriber pattern
 
4. publish / subscribe
4. publish / subscribe4. publish / subscribe
4. publish / subscribe
 
Game Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM patternGame Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM pattern
 
Cloud Design Pattern
Cloud Design PatternCloud Design Pattern
Cloud Design Pattern
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 

Semelhante a Design Pattern 3

HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
SeungHyun Hwang
 
09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)
유석 남
 
9 object class
9 object class9 object class
9 object class
웅식 전
 
Mec++ chapter3,4
Mec++ chapter3,4Mec++ chapter3,4
Mec++ chapter3,4
문익 장
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4
연우 김
 

Semelhante a Design Pattern 3 (20)

HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
 
[Swift] Prototype
[Swift] Prototype[Swift] Prototype
[Swift] Prototype
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Django - CRUD 기능 구현
Django - CRUD 기능 구현Django - CRUD 기능 구현
Django - CRUD 기능 구현
 
09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
Effective java
Effective javaEffective java
Effective java
 
[Swift] Factory Method
[Swift] Factory Method[Swift] Factory Method
[Swift] Factory Method
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
 
9 object class
9 object class9 object class
9 object class
 
Mec++ chapter3,4
Mec++ chapter3,4Mec++ chapter3,4
Mec++ chapter3,4
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용Java script 기본과 jquery의 활용
Java script 기본과 jquery의 활용
 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
 
Python codelab2
Python codelab2Python codelab2
Python codelab2
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
Microsoft pp lpdf
Microsoft pp lpdfMicrosoft pp lpdf
Microsoft pp lpdf
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해
 

Mais de Daniel Lim

Mais de Daniel Lim (20)

내가 생각하는 개발자란?
내가 생각하는 개발자란?내가 생각하는 개발자란?
내가 생각하는 개발자란?
 
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
 
스크럼 101
스크럼 101스크럼 101
스크럼 101
 
nodejs_101.pdf
nodejs_101.pdfnodejs_101.pdf
nodejs_101.pdf
 
For You
For YouFor You
For You
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템
 
13.code split
13.code split13.code split
13.code split
 
12.context api
12.context api12.context api
12.context api
 
11.react router dom
11.react router dom11.react router dom
11.react router dom
 
9.component style
9.component style9.component style
9.component style
 
7.component life cycle
7.component life cycle7.component life cycle
7.component life cycle
 
8.hooks
8.hooks8.hooks
8.hooks
 
6.component repeat
6.component repeat6.component repeat
6.component repeat
 
4.event handling
4.event handling4.event handling
4.event handling
 
5.ref 101
5.ref 1015.ref 101
5.ref 101
 
3.component 101
3.component 1013.component 101
3.component 101
 
2.jsx 101
2.jsx 1012.jsx 101
2.jsx 101
 
1.react 101
1.react 1011.react 101
1.react 101
 
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJSSwagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
 

Último

파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
Wonjun Hwang
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Último (6)

[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 

Design Pattern 3

  • 1. Design Pattern-3 Creational Design Pattern-2 임광규 (lahuman@daum.net)
  • 2. 목차 • Singleton Pattern • Factory Pattern • Abstract Factory Pattern • Builder Pattern • Prototype Pattern
  • 3. Builder Pattern-1 - What is Builder Pattern?- ● 객체를 생성하는 디자인 패턴의 한 종류 ● Abstract Factory Pattern과 Factory Pattern은 생 성하려는 객체에 속성이 많을 경우 문제 발생 ➔ 생성시 많은 전달 값이 필요 ➔ 옵션 전달 인자에 대해서 null 값으로 전달 ➔ 객체가 복잡하거나 무거울 경우 Factory class들 역시 복잡 하여 혼란을 야기함 ● Builder Pattern 은 많은 옵션 전달 값에 대한 객체 생성을 한 발자국씩 처리 ● 결과적으로 원하는 객체를 전달 받음
  • 4. Builder Pattern-2 - How can make? - I.먼저 static nested class를 생성 II.외부 클래스의 전달인자를 복사하여 Builder class를 생성 III.Builder class의 생성자는 모든 필수 전달인자를 받 도록 생성 IV.Builder class는 옵션인자에 대한 메소드를 제공 이 메소드는 생성된 객체에 옵션 값을 추가 한 후에 리턴 V.마지막으로 build() 메소드를 제공 이 메소드는 클라이언트가 요청하는 객체를 생성하여 리턴 클라이언트의 생성자는 builder를 전달인자로 받는 private 으로 설정
  • 5. Builder Pattern-3 - How can make? - Computer 생성자 ComputerBuilder class Computer Class
  • 6. 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
  • 7. Prototype Pattern-1 - What is Prototype Pattern? - ● 생성 디자인 패턴 중의 하나로 객체를 생성하여 제공 ● 객체 생성에 비용이 많이 들거나 많은 시간 또는 자원이 필요할 경우 이미 비슷한 객체가 존재할 경우 사용 ● 원본 객체를 복사하여 새로운 객체를 생성하고 필요한 변경을 추가 ● 이 패턴은 java에서 제공하는 cloning을 이용하여 객체 를 복사
  • 8. Prototype Pattern-2 - How can make? - I. DB에서 기초데이터를 읽어 들인 객체를 생성 II.그 객체에 몇가지 사항이 변경된 데이터가 우리 프로그램에 필요 한 경우 ✗ 객체를 new 키워드를 이용하여 매번 필요한 데이터를 읽어 들이는 것 ✔ 객체의 clone 메소드를 구현 하여 기초 데이터 가 설정된 객체를 얻는 것
  • 9. Prototype Pattern-3 - How can make? - I. Cloneable을 상속 받은 객체 생성 II. 최초 1회만 데이터를 로드 한 이후 객체를 복제 하여 사용
  • 10. 참고 ● 출처 : http://www.journaldev.com/1827/java-design-patterns • GITHUB : https://github.com/lahuman/ study4DesignPattern.git