6. Design: Design Patterns
Choi, Kwanghoon
Chonnam National University
Table of Contents
2
6.5 Design Patterns
3
http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf
Design Pattern Types
4
23 Design Patterns
5
Creational Patterns | Structural Patterns | Behavioral Patterns |
|
|
|
Creational Patterns
6
|
Structural Patterns
7
|
Behavioral Patterns
8
|
Factory Method Pattern
9
참고) GoF 디자인 패턴
Factory Method Pattern
10
Example) CreateDocument()
참고) GoF 디자인 패턴
11
Application(추상클래스) |
CreateDocument() NewDocument() |
PDF Viewer
Picture Viewer
HWP Viewer
12
factory method pattern을 사용하도록
리팩토링(refactoring)
참고) Joshua Kerievsky, Refactoring to design patterns
Abstract Factory Pattern
13
참고) GoF 디자인 패턴
Abstract Factory Pattern
14
참고) 최은만 교재
EIBBulb
EIBBlind
LuxmaterBlind
Abstract Factory Pattern
15
Singleton Pattern
16
public class Singleton {
private static Singleton instance = null;
private Singleton() { … }
public static Singleton getInstance() {
if (instance == null)
instance = new Singleton();
return instance;
}
public void doSomething() {
…
}
}
참고) 정인상, 채흥석, Java로 배우는 디자인패턴
Adapter Pattern
17
참고) 최은만 교재
[Problem]
Adapter Pattern
18
참고) 최은만 교재
[Solution]
Adapter Pattern
19
Composite Pattern
20
참고) GoF 디자인 패턴
Composite Pattern
21
참고) 정인상, 채흥석, Java로 배우는 디자인패턴
Façade Pattern
22
참고) 최은만 교재
Façade Pattern
23
참고) GoF 디자인 패턴
Façade Pattern
24
참고) GoF 디자인 패턴
Iterator Pattern
25
참고) GoF 디자인 패턴
Observer Pattern
26
참고) 최은만 교재
Observer Pattern
27
참고) 최은만 교재
State Pattern
28
참고) GoF 디자인 패턴
State Pattern
29
OFF
ON
on button
off button
off button
on button
[The initial design]
OFF
ON
on button
off button
off button
on button
[A new design]
SLEEP
on button
off button
참고) 정인상, 채흥석, Java로 배우는 디자인패턴
State Pattern
30
참고) 최은만 교재
Decorator Pattern
31
Decorator Pattern
32
// 기본 도로 표시
// 기본 도로 표시 + 차선 표시
// 기본 도로 표시 + 교통량 표시
// 기본 도로 표시 + 차선 표시 + 교통량 표시
Decorator Pattern
33
34
참고) GoF 디자인 패턴