观察者模式 实例

         观察者模式在软件重构中会常常被使用,下面写出一个实例便于理解.. 

代码
1 using System;
2  using System.Collections;
3
4  namespace moniter
5 {
6 public interface objserver
7 {
8 void Action();
9 }
10 public interface subject
11 {
12 void At(objserver obj);
13 }
14
15 public class objserverA:objserver
16 {
17 public objserverA(subject s)
18 {
19 s.At(this);
20 }
21 public void Action()
22 {
23 Console.WriteLine("我是观察者A!");
24 }
25 }
26 public class objserverB:objserver
27 {
28 public objserverB(subject s)
29 {
30 s.At(this);
31 }
32 public void Action()
33 {
34 Console.WriteLine("我是观察者B!");
35 }
36 }
37 public class objSubject : subject
38 {
39 ArrayList objs;
40 public objSubject()
41 {
42 this.objs = new ArrayList();
43 }
44
45 public void At(objserver obj)
46 {
47 objs.Add(obj);
48 }
49 public void SubjectAction()
50 {
51 Console.WriteLine("我是被监视者,观察者报名!");
52 foreach (objserver o in objs)
53 {
54 o.Action();
55 }
56 }
57
58 }
59 class Program
60 {
61 static void Main(string[] args)
62 {
63 objSubject os = new objSubject();
64 objserverA oa = new objserverA(os);
65 objserverB ob = new objserverB(os);
66 os.SubjectAction();
67 Console.ReadLine();
68 }
69 }
70 }
71  

执行结果: 

我是被监视者,观察者报名!

我是观察者A!

我是观察者B!

posted @ 2010-04-10 00:02  funnyzak  阅读(394)  评论(0编辑  收藏  举报