分享
 
 
 

C#对观察者(Observer)模式的支持(一)

王朝学院·作者佚名  2009-10-29
窄屏简体版  字體: |||超大  

首先先让我们了解一下什么是观察者模式,观察者模式是对象的行为型模式,又叫依赖/从属者模式、发布-订阅模式、源-监听模式。观察者模式:定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新(GOF)。

如我们的项目中有一个邮件系统,当发送邮件时可能需要发送手机短信和RTX信息通知邮件接收者,这时就可以用观察者模式进行设计,如果以后还需要增加第三种通知方式,那么我们的系统会很容易的把新通知方式加入进来。观察者模式在C#中应用的也很多,最常见的就是我们用到各种控件的事件监听机制。

观察者模式的实现中有四种类型的参与者,分别:

1、 抽象主题/目标(Subject)

它可以有任意多个的观察者,并在一个集合对象中保存对观察者的引用,并提供增加和删除观察者对象的接口,一般用一个抽象类和接口实现。

2、 抽象观察者(Observer)

为所有的具体观察者定义的一个更新接口,当主题/目标发生变化时,通知具体观察者更新自己。通常用一个抽象类或接口实现。

3、 具体主题/目标(ConcreteSubject)

将有关的状态存入具体观察者对象,当它的状态发生改变时,向所有注册的观察者发出通知。具体主题/目标又被称为被观察者。

4、 具体观察者(ConcreteObserver)

维护一个指向具体主题/目标的引用,并存储与具体主体/目标一致的相关状态,并实现一个具体的抽象观察者的更新接口,以使自身状态与主题/目标状态保持一致。

我们用观察者模式实现一个简单的邮件发送系统,并且发送邮件的同时发送手机短信和RTX消息通知邮件接收者。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有