Strategy 定义一系列算法或策略,把它们封闭起来,并且使它们相互可以替换。各算法或策略可以独立于客户程序而变化。


1

2

3

4

5

6



7

8



9

10



11

12

13

14



15

16



17

18

19

20



21

22

23

24

25

26

27



28

29

30

31



1

2

3

4

5

6



7

8



9

10

11



1

2

3

4

5

6



7

8



9

10

11


12

13

14



15

16

17

18

19

20



1

2

3

4

5

6



7

8



9

10



11

12

13

14



1

2

3

4

5

6



7

8



9

10

11


12

13

14



15

16

17

18

19

20



1

2

3

4

5

6



7

8



9

10



11

12

13

14



1

2

3

4

5

6



7

8



9

10

11

12

13

14



15

16

17

18

19



20

21

22

23


24

25

26



27

28

29

30

31

32



1

2

3

4

5

6



7

8



9

10

11


12

13

14



15

16

17

18

19

20



1

2

3

4

5

6



7

8



9

10



11

12



13

14

15

16



17

18

19

20

21

22

23



24

25



26

27



28

29

30

31



32

33

34

35



36

37

38

39



40

41

42

43

44

45

46

47



48

49

50

51

52



53

54

55

56

57



58

59

60

61

We can see three design principle:
1.Identify the aspects of your application that vary and separate them from what stays the same.
2.Program to an interface, not an implemention.
3.Favor composition over inheritance.
Can you see it?
.jpg)