您的位置:首页 > 编程语言

TT和LG编程设计模式之观察者

2008-09-08 13:40 267 查看
概述

在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。这也就是所谓的观察者模式!

故事情节:TT是一个非常善良友好的人,所以观察她的人比较多。有一次TT因为LG而哭了,她身边的人心情也立刻转变了...........

结构图:(略,下次有空我再补上吧)

程序结果:

//反应事件

2public delegate void Reaction(object sender,EventArgs e);

3

4//被观察者的抽象

5public interface ISubject

6//现实的故事中,TT是一个被别人关注的对象

2

3//TT成了被观察者

4public class TT:ISubject

5//观察者抽象

2public interface IObserver

3

7//观察TT的LG

8public class LG:IObserver

9

25//观察TT的HXQ

26public class HXQ:IObserver

27

43//观察TT的LFN

44public class LFN:IObserver

45

61

62//观察TT的JH

63public class JH:IObserver

64

//程序入口

2public class MyProgram

3{

4{

7 ISubject tt = new TT("TT");

8 IObserver lg = new LG("LG");

9 IObserver hxq=new HXQ("HXQ");

10 IObserver lfn=new LFN("LFN");

11 IObserver jh=new JH("JH");

12

13 tt.AttachReaction(new Reaction(lg.ObserveTT));

14 tt.AttachReaction(new Reaction(hxq.ObserveTT));

15 tt.AttachReaction(new Reaction(lfn.ObserveTT));

16 tt.AttachReaction(new Reaction(jh.ObserveTT));

17

18 Console.WriteLine("一年前:");

19 Console.WriteLine();

20 //TT第一次哭了

21 tt.Cry();

22

23

24 Console.WriteLine("十年后:");

25 Console.WriteLine();

26 //TT第二次偷偷的哭了,LG不知道,LG不是故事中的观察者了

27 tt.DetachReaction(new Reaction(lg.ObserveTT));

28

29 //TT第二次哭了

30 tt.Cry();

31

32 Console.ReadKey();

33 }

34}

欢迎大家指出问题!谢谢

作者:Louja

出处:http://louja.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: