题目:17个人围成一圈,从第一个人开始报数,报到3的退出,一直到剩下最后一个人,用面向对象的思想去做这道题。
前面两篇感觉上还是不够面向对象,至少要有面向对象三大特征:封装,继承,多态吧,第一篇仅是构建了一个双向循环链表数据结构,思想还是面向过程的。
第二篇用到了泛型委托,但是思想和特定技术是不相关的,用到泛型委托未必就是面向对象啊。
所以我也斗胆写了下这道题,请大家指教了:
首先说明,这里用到了状态模式,单例模式,主要还是状态模式,实现了一个简单的状态机,
先上图:

再上代码:
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace Test
6 {
7 interface IPersonState
8 {
9 void Handle();
10
11 void Handle(Person person);
12 }
13 }
14
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace Test
6 {
7 interface IPersonState
8 {
9 void Handle();
10
11 void Handle(Person person);
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

33

34

35

36

37

38

39



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



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



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



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



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

62



63

64

65

66

67

68

69

调用:


1

2

3

4

5

6



7

8



9

10



11

12

13

14

15

16

运行结果:
源代码:/Files/hongyin163/Test.rar
不知道大家感觉怎样?