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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。
在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。这也就是所谓的观察者模式!
故事情节: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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- TT和LG编程设计模式之代理
- C++设计模式编程中的观察者模式使用示例
- 详解Python设计模式编程中观察者模式与策略模式的运用
- Android编程设计模式之观察者模式实例详解
- 深入解析Java设计模式编程中观察者模式的运用
- Android编程:观察者模式设计
- 【编程素质】设计模式-观察者模式
- 设计模式中的观察者模式在Ruby编程中的运用实例解析
- 举例讲解Python设计模式编程中的访问者与观察者模式
- 举例讲解Python设计模式编程中的访问者与观察者模式
- 详解Python设计模式编程中观察者模式与策略模式的运用
- 设计模式学习--观察者模式(Observer Pattern)
- 使用Mixin设计模式进行Python编程的方法讲解
- PHP 设计模式之观察者模式实现
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- 安卓常用的设计模式之观察者模式
- Java设计模式-观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者