SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Head First  디자인 패턴  1/2 데브루키  꿜라  석재호
목  차 디자인 패턴 소개  전략 (Strategy)  패턴 옵저버 패턴 데코레이터 패턴 팩토리 패턴 싱글턴 패턴 커맨드 패턴 어댑터 패턴  &  퍼사드 패턴
디자인 패턴 좋은 구조의 소프트웨어 만들자 설  계 구  현 개 선 점  발 견 하 나 의  검 증 된  패 턴 으 로  정 립
디자인 패턴 ,[object Object],[object Object]
디자인 패턴의 장점 ,[object Object],[object Object],[object Object],[object Object]
디자인 패턴 ,  주의할 점 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
전략 패턴
디자인 원칙 ,[object Object],[object Object],[object Object],[object Object]
디자인 원칙 ,[object Object],[object Object],[object Object]
전략 패턴이란 ? ,[object Object],[object Object],[object Object]
전략 패턴 예제 ,[object Object],[object Object],[object Object],[object Object],[object Object],Duck Quack() Display() M_Duck Display()  적절히 오버라이드 R_Duck Display()  적절히 오버라이드
[object Object],“ 날게 해주세요 .” Duck Quack() Display() Fly() M_Duck Display()  적절히 오버라이드 R_Duck Display()  적절히 오버라이드
[object Object],“ 귀여운 고무오리 인형을 추가해주시죠 .” Duck Quack() Display() Fly() M_Duck Display()  적절히 오버라이드 R_Duck Display()  적절히 오버라이드 Gomu_Duck Quack()  삑삑 소리 Display()
[object Object],“ 인형이 왜 날죠 ?  장난하시나 .. ” Duck Quack() Display() Fly() M_Duck Display()  적절히 오버라이드 R_Duck Display()  적절히 오버라이드 Gomu_Duck Quack()  삑삑 소리 Display()
[object Object],[object Object],[object Object],[object Object],Gomu_Duck Quack()  삑삑 소리 Display()  Fly() { 아무것도 하지 않는다 }
[object Object],[object Object],“ 날지도 못하고 소리도 안 나는 나무 인형도 ..” Duck Quack() Display() Fly() M_Duck Display()  적절히 오버라이드 R_Duck Display()  적절히 오버라이드 Gomu_Duck Quack()  Display()  Fly()
인터페이스를 쓰면 괜찮겠는걸 ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
점점 오리는 추가되고 ..  ,[object Object],[object Object],[object Object],[object Object],[object Object]
전략 패턴의 등장 ,[object Object],[object Object],[object Object]
알고리즘군 나는 행동 우는 행동 똑바로 삐뚤빼뚤 못 남  ㅋ 뒤  로 꽥 꽥 어머니 ~ 쾍 쾍 콜록 콜록 행  동
알고리즘군의 구현  -  인터페이스와 구현객체 FlyInterface Fly() FlyStraight Fly() FlyBack Fly() CannotFly Fly() QuackInterface Quack() Qquaack Quack() Guak Quack() Silent Quack()
알고리즘군의 사용 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Duck performQuack(); performFly(); Display(); … FlyInterface *flyInt; QuackInterface *quackInt;
구현보단 인터페이스 .  상속보단 구성 Duck Fly  인터페이스 Gomu Duck Oh Duck Bindae Duck 똑바로 날기 옆으로 날기 못 날기 Quack  인터페이스 꽥  꽥 엉  엉 뜨얿
의견 교환의 시간 ,[object Object]
옵저버 패턴
디자인 원칙 ,[object Object],[object Object]
옵저버 패턴 ,[object Object],[object Object],[object Object],[object Object],[object Object]
예를 들자면 .. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
옵저버 패턴 ,[object Object],[object Object],[object Object],[object Object],[object Object]
옵저버 패턴 ,[object Object],[object Object],[object Object],[object Object]
옵저버 패턴 ,[object Object],[object Object],[object Object],[object Object]
옵저버 패턴 구조 신문사 인터페이스 구독자등록 () 구독자해지 () 새신문전달 () 구독자 인터페이스 새신문받기 () 신문사 구현클래스 구독자등록 () 구독자해지 () 새신문전달 () 추가 _ 상태설정함수 () 구독자 구현클래스 새신문받기 () 추가 _ 옵저버용함수 () 구독자 여러 개 등록 가능 신문사를 알아야  등록요청 가능 느슨 느슨
느슨느슨 열매의 힘 ,[object Object],[object Object],[object Object],[object Object],[object Object]
다시 찾아온 의견 교환의 시간 ,[object Object],[object Object],[object Object],[object Object]
데코레이터 패턴
디자인 원칙 ,[object Object]
데코레이터 패턴 ,[object Object],[object Object]
데코레이터 패턴 ,[object Object],[object Object],[object Object]
칼칼 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],칼 getDamage(); 도  끼 getDamage(); 활 getDamage(); 무기 인터페이스 getDamage(); getDescription(); int  데미지 ;
음… 도  끼 getDamage(); 활 getDamage(); 디아 3  룬 + 스킬 조합은  968 억개가 넘는다던데… .   무기 인터페이스 getDamage(); getDescription(); int  데미지 ; 칼 getDamage(); 저주받은 칼 getDamage(); 바람의 축복받은 칼 getDamage(); 강화된 저주받은 칼 getDamage(); 불의 도끼 getDamage(); 강화된 얼음의 축복받은 도끼 getDamage(); 요정의 저주받은 활 getDamage(); 강화된 바람의 활 getDamage(); 오크족의 드러운 칼 getDamage();
무기와 버프를 모두 따로 따로 바람의 getDamage(); 칼 getDamage(); 축복받은 getDamage(); 칼 getDamage(); 데미지 계산
데코레이터 패턴 구조 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
데코레이터 패턴 구조 칼 getDamage(); getDescription(); 도  끼 getDamage(); getDescription(); 무기 인터페이스 getDamage(); getDescription(); 버프 인터페이스 getDescription(); 바  람  의 getDamage(); getDescription(); 무기인터페이스 *  안쪽버프 ;  강  화  된 getDamage(); getDescription(); 무기인터페이스 *  안쪽버프 ;
객체 겹치기 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
의  to the  견  to the  교  to the  환 ,[object Object],[object Object],[object Object],[object Object],[object Object]
팩토리 패턴
스타 2  하시는 분 [email_address] 친추 실버 ,  브론즈 우대
팩토리 패턴 ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],크루시오 공성전차  (Siege Tank) 단축키  - S  토르  (Thor) 단축키  - T
생산을 ..  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
팩토리의 필요성 ,[object Object],[object Object],[object Object]
다시 한 번 디자인 원칙 ,[object Object],[object Object],[object Object],[object Object]
생성부 캡슐화 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
군수공장의 다양화에도 .. ,[object Object],[object Object],[object Object],[object Object],[object Object],군수공장 인터페이스 createUnit(); displayUnit(); 비싼 군수공장 createUnit(); 싼 군수공장 createUnit();
유닛 생산을 위해 ,[object Object],[object Object],[object Object],Unit 싸구려 토르 싸구려 화염차 싸구려 탱크 비싼 토르 비싼 화염차 비싼 탱크 비싼 군수공장 createUnit();
팩토리 메서드 패턴 구조 제품 인터페이스 구상 제품 팩토리 인터페이스 factoryMethod(); otherMethod(); 구상 팩토리 factoryMethod();
의견 교환의 시간 ,[object Object],[object Object]
싱글턴 패턴
싱글턴 패턴 ,[object Object],[object Object],[object Object],[object Object]
싱글턴 패턴의 이점 전역변수에 비해 필요할 때만 만들 수 있어 자원 절약 여러 번역단위에서 중복 생성할 위험이 없음
싱글턴 패턴의 이점 전역변수에 비해 필요할 때만 만들 수 있어 자원 절약 여러 번역단위에서 중복 생성할 위험이 없음
고전적인 싱글턴 패턴 구현법 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
의견 교환의 시간 ,[object Object],[object Object],[object Object]
어댑터 패턴   &  퍼사드 패턴
어댑터 패턴과 퍼사드 패턴 ,[object Object]
어댑터 패턴 ,[object Object],[object Object],[object Object],[object Object]
어댑터 패턴 ,[object Object],[object Object],[object Object],메  인 Void testDuck(Duck* d) { d->Quack(); d->Fly(); } Duck Quack(); Fly(); M_Duck Quack(); Fly(); R_Duck Quack(); Fly();
“ 그간 편했죠 ?  칠면조도 넣어주시죠 ?” ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],메  인 Void testDuck(Duck* d) { d->Quack(); d->Fly(); } Turkey Gobble(); Fly(); WildTurkey Gobble(); Fly();
어댑터 !!! TurkeyAdapter Quack(); Fly(); TurkeyAdapter TurkeyAdapter(Turkey* turkey) : tu(turkey) {} Void Quack()  {  tu.Gobble();  } Void Fly() {  tu.Fly();  } Turkey *tu; Duck Quack(); Fly();
어댑터 패턴 ,[object Object],[object Object],M_Duck* mD = new M_Duck(); WildTurkey* wT = new WildTurkey(); Duck* tA = new TurkeyAdapter(wT); testDuck(mD); testDuck(tA); //  문제없이 동작 TurkeyAdapter Duck Quack(); Fly(); M_Duck Quack(); Fly();
어댑터 패턴 구조 ,[object Object],[object Object],[object Object],Target Interface Request() Client Adapter Request() Adaptee specificRequest()
클래스 어댑터 ,[object Object],[object Object],[object Object],[object Object],[object Object],Target Interface Request() Client Adapter Request() Adaptee specificRequest()
퍼사드 패턴 ,[object Object],[object Object],[object Object],[object Object],[object Object]
디자인 원칙 ,[object Object],[object Object],[object Object]
영화를 봅시다 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
에이 복잡해… 그냥… MovieFacade 팝콘기계 DVD 플레이어 앰프 스 크 린 DVD 플레이어 조  명 프 로 젝 터
하나로 통합 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],MovieFacade ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
마지막 의견 교환의 시간
감 사 합 니 다

Weitere ähnliche Inhalte

Was ist angesagt?

[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어NAVER D2
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object poolingNam Hyeonuk
 
Effective c++ chapter 7,8
Effective c++ chapter 7,8Effective c++ chapter 7,8
Effective c++ chapter 7,8문익 장
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Dong Chan Shin
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해Yong Hoon Kim
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern대영 노
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 pptInjae Lee
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정중선 곽
 
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2Jubok Kim
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guideSungchul Park
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
디자인 패턴 적용
디자인 패턴 적용디자인 패턴 적용
디자인 패턴 적용Sean Choi
 
이펙트 쉐이더 1강 - Shader 기초 개념
이펙트 쉐이더 1강 - Shader 기초 개념이펙트 쉐이더 1강 - Shader 기초 개념
이펙트 쉐이더 1강 - Shader 기초 개념Jihoo Oh
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 

Was ist angesagt? (18)

[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object pooling
 
Effective c++ chapter 7,8
Effective c++ chapter 7,8Effective c++ chapter 7,8
Effective c++ chapter 7,8
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
Exception&log
Exception&logException&log
Exception&log
 
Chapter7~9 ppt
Chapter7~9 pptChapter7~9 ppt
Chapter7~9 ppt
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
디자인 패턴 적용
디자인 패턴 적용디자인 패턴 적용
디자인 패턴 적용
 
이펙트 쉐이더 1강 - Shader 기초 개념
이펙트 쉐이더 1강 - Shader 기초 개념이펙트 쉐이더 1강 - Shader 기초 개념
이펙트 쉐이더 1강 - Shader 기초 개념
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 

Ähnlich wie [0820 석재호]headfirst디자인패턴

HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2SeungHyun Hwang
 
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1정환 임
 
Design patterns
Design patternsDesign patterns
Design patterns용현 윤
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraftbbongcsu
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13Shin heemin
 
Template at c++
Template at c++Template at c++
Template at c++Lusain Kim
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리Injae Lee
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental systemJaehoon Oh
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7Yeonah Ki
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
Design patterns 스터디 -strategy패턴
Design patterns 스터디 -strategy패턴Design patterns 스터디 -strategy패턴
Design patterns 스터디 -strategy패턴Hyunho-Cho
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)Jinwook On
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinDong Chan Shin
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
Design patterns
Design patternsDesign patterns
Design patternsdf
 

Ähnlich wie [0820 석재호]headfirst디자인패턴 (20)

HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
 
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1
 
Design patterns
Design patternsDesign patterns
Design patterns
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraft
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13
 
Template at c++
Template at c++Template at c++
Template at c++
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리effective c++ chapter 3~4 정리
effective c++ chapter 3~4 정리
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
5 6 1
5 6 15 6 1
5 6 1
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
Design patterns 스터디 -strategy패턴
Design patterns 스터디 -strategy패턴Design patterns 스터디 -strategy패턴
Design patterns 스터디 -strategy패턴
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshin
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Design patterns
Design patternsDesign patterns
Design patterns
 

Mehr von Jaeho Seok

[0820 석재호]게임 입력의 기록 및 재생
[0820 석재호]게임 입력의 기록 및 재생[0820 석재호]게임 입력의 기록 및 재생
[0820 석재호]게임 입력의 기록 및 재생Jaeho Seok
 
[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델
[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델
[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델Jaeho Seok
 
[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑Jaeho Seok
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링Jaeho Seok
 
[0528 석재호]게임을위한기초수학과물리
[0528 석재호]게임을위한기초수학과물리[0528 석재호]게임을위한기초수학과물리
[0528 석재호]게임을위한기초수학과물리Jaeho Seok
 
[0521 석재호]백트래킹알고리즘
[0521 석재호]백트래킹알고리즘[0521 석재호]백트래킹알고리즘
[0521 석재호]백트래킹알고리즘Jaeho Seok
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리Jaeho Seok
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리Jaeho Seok
 
[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기Jaeho Seok
 
[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기Jaeho Seok
 

Mehr von Jaeho Seok (10)

[0820 석재호]게임 입력의 기록 및 재생
[0820 석재호]게임 입력의 기록 및 재생[0820 석재호]게임 입력의 기록 및 재생
[0820 석재호]게임 입력의 기록 및 재생
 
[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델
[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델
[0731 석재호]윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델
 
[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑[0618 석재호]용기에담긴액체를위한굴절매핑
[0618 석재호]용기에담긴액체를위한굴절매핑
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링
 
[0528 석재호]게임을위한기초수학과물리
[0528 석재호]게임을위한기초수학과물리[0528 석재호]게임을위한기초수학과물리
[0528 석재호]게임을위한기초수학과물리
 
[0521 석재호]백트래킹알고리즘
[0521 석재호]백트래킹알고리즘[0521 석재호]백트래킹알고리즘
[0521 석재호]백트래킹알고리즘
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
 
[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리[0326 석재호]상호배타적 집합의 처리
[0326 석재호]상호배타적 집합의 처리
 
[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기
 
[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기[0319 석재호] 소외된 계층_돌아보기
[0319 석재호] 소외된 계층_돌아보기
 

[0820 석재호]headfirst디자인패턴

  • 1. Head First 디자인 패턴 1/2 데브루키 꿜라 석재호
  • 2. 목 차 디자인 패턴 소개 전략 (Strategy) 패턴 옵저버 패턴 데코레이터 패턴 팩토리 패턴 싱글턴 패턴 커맨드 패턴 어댑터 패턴 & 퍼사드 패턴
  • 3. 디자인 패턴 좋은 구조의 소프트웨어 만들자 설 계 구 현 개 선 점 발 견 하 나 의 검 증 된 패 턴 으 로 정 립
  • 4.
  • 5.
  • 6.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. 알고리즘군 나는 행동 우는 행동 똑바로 삐뚤빼뚤 못 남 ㅋ 뒤 로 꽥 꽥 어머니 ~ 쾍 쾍 콜록 콜록 행 동
  • 21. 알고리즘군의 구현 - 인터페이스와 구현객체 FlyInterface Fly() FlyStraight Fly() FlyBack Fly() CannotFly Fly() QuackInterface Quack() Qquaack Quack() Guak Quack() Silent Quack()
  • 22.
  • 23. 구현보단 인터페이스 . 상속보단 구성 Duck Fly 인터페이스 Gomu Duck Oh Duck Bindae Duck 똑바로 날기 옆으로 날기 못 날기 Quack 인터페이스 꽥 꽥 엉 엉 뜨얿
  • 24.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. 옵저버 패턴 구조 신문사 인터페이스 구독자등록 () 구독자해지 () 새신문전달 () 구독자 인터페이스 새신문받기 () 신문사 구현클래스 구독자등록 () 구독자해지 () 새신문전달 () 추가 _ 상태설정함수 () 구독자 구현클래스 새신문받기 () 추가 _ 옵저버용함수 () 구독자 여러 개 등록 가능 신문사를 알아야 등록요청 가능 느슨 느슨
  • 33.
  • 34.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. 음… 도 끼 getDamage(); 활 getDamage(); 디아 3 룬 + 스킬 조합은 968 억개가 넘는다던데… . 무기 인터페이스 getDamage(); getDescription(); int 데미지 ; 칼 getDamage(); 저주받은 칼 getDamage(); 바람의 축복받은 칼 getDamage(); 강화된 저주받은 칼 getDamage(); 불의 도끼 getDamage(); 강화된 얼음의 축복받은 도끼 getDamage(); 요정의 저주받은 활 getDamage(); 강화된 바람의 활 getDamage(); 오크족의 드러운 칼 getDamage();
  • 41. 무기와 버프를 모두 따로 따로 바람의 getDamage(); 칼 getDamage(); 축복받은 getDamage(); 칼 getDamage(); 데미지 계산
  • 42.
  • 43. 데코레이터 패턴 구조 칼 getDamage(); getDescription(); 도 끼 getDamage(); getDescription(); 무기 인터페이스 getDamage(); getDescription(); 버프 인터페이스 getDescription(); 바 람 의 getDamage(); getDescription(); 무기인터페이스 * 안쪽버프 ; 강 화 된 getDamage(); getDescription(); 무기인터페이스 * 안쪽버프 ;
  • 44.
  • 45.
  • 47. 스타 2 하시는 분 [email_address] 친추 실버 , 브론즈 우대
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56. 팩토리 메서드 패턴 구조 제품 인터페이스 구상 제품 팩토리 인터페이스 factoryMethod(); otherMethod(); 구상 팩토리 factoryMethod();
  • 57.
  • 59.
  • 60. 싱글턴 패턴의 이점 전역변수에 비해 필요할 때만 만들 수 있어 자원 절약 여러 번역단위에서 중복 생성할 위험이 없음
  • 61. 싱글턴 패턴의 이점 전역변수에 비해 필요할 때만 만들 수 있어 자원 절약 여러 번역단위에서 중복 생성할 위험이 없음
  • 62.
  • 63.
  • 64.
  • 65. 어댑터 패턴 & 퍼사드 패턴
  • 66.
  • 67.
  • 68.
  • 69.
  • 70. 어댑터 !!! TurkeyAdapter Quack(); Fly(); TurkeyAdapter TurkeyAdapter(Turkey* turkey) : tu(turkey) {} Void Quack() { tu.Gobble(); } Void Fly() { tu.Fly(); } Turkey *tu; Duck Quack(); Fly();
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77. 에이 복잡해… 그냥… MovieFacade 팝콘기계 DVD 플레이어 앰프 스 크 린 DVD 플레이어 조 명 프 로 젝 터
  • 78.
  • 80. 감 사 합 니 다