WEB开发网
开发学院软件开发VB C#对观察者(Observer)模式的支持(一) 阅读

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

 2009-10-28 12:47:47 来源:WEB开发网   
核心提示:首先先让我们了解一下什么是观察者模式,观察者模式是对象的行为型模式,C#对观察者(Observer)模式的支持(一),又叫依赖/从属者模式、发布-订阅模式、源-监听模式,观察者模式:定义了对象间的一种一对多的依赖关系,以使自身状态与主题/目标状态保持一致, 我们用观察者模式实现一个简单的邮件发送系统,当一个对象的状态发

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

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

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

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

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

2、  抽象观察者(Observer)

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

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

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

4、  具体观察者(ConcreteObserver)

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

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

Tags:观察者 Observer 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接