Professional Documents
Culture Documents
Design-Patterns (Theory)
Design-Patterns (Theory)
?
a
!
a"
#
$
ï
is a software engineering book describing recurring solutions to common problems
in software design.
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
^
ï
!
a"
u
&
? '
(
*
!+!
oupling:
?
#
#
,#
ï ïevice Management ïrawbacks of high oupling:
º
º
º '
"
º !
º "
User Management
-
!+!!
ï ïevice Management
menefits of Low-coupling:
º
º
º !
User Management
a
)
.
/
!+!!
ohesion:
'
0
a
0
'
11
0
)6
a
114
0
6
11
5
223
)0
114
%%
22m
5
5
0
5 %%
5
5
!
78
9
!
4
9 m
4
!
X
)
X
)
/
X
X
9
!
!
)
X
)
X
X
)
)
:
/
a
4 m
9 !
'
$ 8
^ 8;
& "
$
m
4 <
9 <
=
$ =
^ .
&
*
-
+
>!
^
!
78'
&
'
8
?
?
?
8
'
8
8
*
Úatterns Úeriodic Table.
The holy
The holy origins.
Structural
a
Factory
Adapter
Method
The holy
mehaviors ï
hain of
Úrototype Singleton omposite ïecorator
Responsibility
a ï ï
Abstract Template
ommand Mediator Observer Interpreter Úroxy Facade
Factory Method
muilder Strategy Memento State Iterator Visitor Flyweight mridge
-
4
<
3'@
'
4 !
9
8
$ <
^ .
&
*
- !
a
"
4 m
9 8
4
'
a
%
44
<
+!
<
% =
A%B
% @
%"
% m
%
49
a
<
%
% '
%
4
'
<
% '
% !
4$
F=G!'
E
.
E
E
E
E
4^
7 <
'
1
'
!
6
4&
'
8<
3
4*
'
m
8<
3
<
4-
3
m
1
m
<
8<
6
9
'
8
3
G
G
1G
8
A
B6
G6
9
3
8
E
6
G
G6
6
94
"% 4
public interface I omponent { public interface ïecorator extends I omponent {
public void doStuff(); public void addedmehavior();
} }
public class omponent implements I omponent{
public void doStuff() {
System.out.println("ïo Suff");
} public class lient {
} public static void main (String[] args)
{
public class oncreteïecorator implements ïecorator { I omponent comp = new omponent();
I omponent component; ïecorator decorator = new oncreteïecorator(comp);
public oncreteïecorator(I omponent component) { decorator.doStuff();
super(); }
this.component = component; }
}
public void addedmehavior() {
System.out.println ("ïecorator does some stuff too");
}
public void doStuff() {
component.doStuff();
addedmehavior();
}
99
F'
H
9
9$
ï
a
)
[
9^
!
9&
F=G!'
!
. E
!
!
.
E
.
E
8
a
9*
7
!
!
!
!
)
<
G
/
<
!
/
9-
!
E
º
)
º
º
GE
º
)
a
º
)
!
E
º
º
%
!
7 <
0
6
6
+
6
0
6
6
1+
6
5
22
>
0
6
5
0
6
5
5
7 <
0
1 Aam!BB! .B6
1 A=+BB=
+B6
1 A+BB
+B6
6
6
1 A=7BB= B6
= 1 Aa'+=7BBa
= B6
6
= 6
1 A BB B6
1 ABBB6
6
6
5
+
.
1
6
.
I1 0
.
6
50
u
Eu
65
4
3'@<
3!
9
'
+!
a
!
Ea
$
a
^
&
!
"
<
a
<
*
!
E
º
!
"
E
º
!
)
º
)
º
-
7 <
"
0
" 0
"
!" 6
"
6 5
6
" "
0
1
6
16
5
<0
6
5
"
!0
"
!
6
5
5
$
7 <
"
"
0
a 1 $6
"
!"
0
<Ja 6
5
5
$
7 <
KL
0
$4
3'@
$9
3'@<
16
m
AB6
m
A4B6
m
A9B6
m
A$B6
m A^B6
$
3'@<
%
16
G
7
G
946
m
AB6
m
A4B6
m
A9B6
m
A$B6
m A^B6
$$
a
º
º
<
º
%
%
º
$^
a
$&
'
$*
8
$-
F=G!'
=
E
=
E
^
E
'
)
!
'
)
!
!
E
.
!
^
7 <
KL 0
<! 8
1<! 8
6
<! +1<! +
6
m
E'
!u!
u6
5
5
^4
3'@<
m
1m
8
Gm
! 6
m
41m
8
m
m
a< '6
m
1m
8
mm
6
^9
3'@<
M
:
8
=
3'@E
)
!
<
6
^
a
º
!
)
"
)
^$
'
^^
<
/
"
^&
8
!
<
"
<'
!
<
! <
^*
<
E
'
!
<
E
<
<
@
a
E
'
<
)
^-
0 !
º ?
<
A
B3
º )
<
º a
)
º
)
º 33'@4
!
<
&
$
!
E
&
a
F
<
E
º
)
"
º
&4
!/
m
X
a
X
X
/
#
I
&9
.
'%
%
)
)
%)
<
@
a
&
m
.)
.)
4
)
.) 9
.)
&$
!
! !
&^
)
E
. )
. E
)
)
!
)
E
!
. )
!
. E
!
)
)
.
)
#
&&
3'@<
&*
<
.
,
"
.
º
%
3
&-
3m
a
G
E
a
G
1a
G
0
a
0
5
56
3m
13m
u =u6
*
a
.
R
*
!
.
º
F
)
.
*4
*9
<
E
&
º
<
/
<
3
*
7 <
*$
7 <
0
!
0
KL0
!
0 !
1!
!
6
5
'
A!E2
BBF8%*B
6
5
!
16 5
*^
3'@<
*&
**
.)
1
)6
*-
%
!
<
0
22F
"
G !
6
11
0
1
6
5
FG !
6
6
5
-
'%
G
N :
N
:
"
-
'%
G
-4
<
-9
<
?
-
<
<
9
%
% <
<
-$
a
-^
'
.
"
)
/
)
)
-&
)
)
)
-*
<
!
! !
--
F=G'
!
! '
7 <
!a
"
!0
!a
6
5
!a0
0
u
u6
5
!a
0
u
u6
+16
0
+1 6
5
"
0
u u6
5
+6
5
5
7 <
4
7 <
0
KL 0
!==1!=6
16
!
1!6
!
!1!=!
6
1=!
6
9
3'@<
<
3!
.)
F
$
a
^
a
<
a
R
&
'
!
*
!
<
/
-
E22 2)O
O
2
O
3'@<
l ?
3
"
l G
#
8P.
8P "
4
3'@<
:
a
0
.)
)1
6
)11..6
)11 "
"
!
6
)11
!
6
5
.0
8'
18'
B.B8'G.a'5
"
!
0
"
65
!
0
m 7
! '6
5
9
7
"
Q
<
<
#
)
.
)
E
a
0
!
1!
6
"
6
5
$
!
.)
0
"
6
5
^
0
.
&
,
E22)
2)
2)% ^%--*2)% ^%
(1
*
-
!
/E
!
)
4 !
%)
"
)
9 ,
!
#
"
-
'
!
º
4
a
%
%
a
!
a
)
.
a
a
"
<
4
X
"
#
% a)
44
/
/
49
!
E
!
)
E
'
%
!
a
E
"
a
E
a
a
4
4$
a
E
!a
º F
º
"
%"
º !a
/
3
4 .)
a
º
º <
)
4^
a
?
a
=
a
4&
!
m
a
a
?
a
a
m
4*
"!
!
E
.)
º !
º /
)
:
4-
? a
a)
a
a
<
)
a
a
)
)
:
9
<
? a
6
a
'
a
'
9
<
? a
94
a
a
99
0
<
3<
3
.
3
?
a
9
X a
)
ï
9$
" E
% <
.)
% a
º <
")
"
"
#
)
º <
)
"
"
)
9^
%$
9&
%$ .
9*
)
9-
"
)
)
R
%
%
)
%
)
#
%
)
#
)
"
r
'
)
/
"
!
"
"
#
$
R %
!
/
)
)
4
" E
º
"
)
º
)
#
"
)
º
)
)
E
º
)
"
"
)
"
)
E
º
)
"
9
3'@<
3'@
"
)
º
>
E
)
"
4 )
<
º )
+
+
:
"
)"<<
"
)
<
"
$
"!
:
!
"
^
a
+
"
4
"
9
"
"
&
a
" E
)
a
)
"
'
*
m
-
" =<
$
m
)
m
G
)
$
E22 2
$4