23种设计模式之观察者模式(Observer)
2017-04-10 15:59
519 查看
观察者模式又称为发布—订阅模式、模型—视图模式、源-监听器模式或从属者(dependents)模式,是一种对象的行为型模式。它定义了对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。观察者模式的优点在于实现了表示层和数据层的分离,并定义了稳定的更新消息传递机制,类别清晰,抽象了更新接口,使得相同的数据层可以有各种不同的表示层。
优点:
1)抽象了主体与Observer之间的耦合关系。
2)支持广播方式的通信。
使用场景:
1)对一个对象的修改涉及对其它对象的修改,而且不知道有多少对象需要进行相应修改。
2)对象应该能够在不用假设对象标识的前提下通知其它对象。
优点:
1)抽象了主体与Observer之间的耦合关系。
2)支持广播方式的通信。
使用场景:
1)对一个对象的修改涉及对其它对象的修改,而且不知道有多少对象需要进行相应修改。
2)对象应该能够在不用假设对象标识的前提下通知其它对象。
public interface Observer { void Update(Subject subject); }
public interface Subject { void Attach(Observer docExplorer); void Detach(Observer docExplorer); void NotifyObservers(); }
public class DocExplorer : Observer { public void Update(Subject subject) { Console.WriteLine("更新DocExplorer自身的状态"); } }
/// <summary> /// 公文类 /// </summary> public class OfficeDoc : Subject { //存储与OfficeDoc相关联的DocExplorer对象 private IList<Observer> observerList = new List<Observer>(); /// <summary> /// 将某DocExplorer对象与OfficeDoc相关联 /// </summary> /// <param name="docExplorer"></param> public void Attach(Observer docExplorer) { observerList.Add(docExplorer); } /// <summary> /// 解除某DocExplorer对象与OfficeDoc的关联关系 /// </summary> /// <param name="docExplorer"></param> public void Detach(Observer docExplorer) { observerList.Remove(docExplorer); } /// <summary> /// 通知所有的DocExplorer对象 /// </summary> public void NotifyObservers() { IEnumerator enumeration = observerList.GetEnumerator(); while (enumeration.MoveNext()) { Observer observer = enumeration.Current as Observer; observer.Update(this); } } }
class Program { static void Main(string[] args) { //观察者设计模式 Subject subject = new OfficeDoc(); Observer doc = new DocExplorer(); subject.Attach(doc); subject.Attach(doc); subject.Attach(doc); subject.NotifyObservers(); } }
相关文章推荐
- 【行为型模式】观察者模式(Observer)之23种java设计模式
- 23种设计模式之观察者模式(Observer)
- 23种设计模式之观察者模式(Observer)
- 【Unity与23种设计模式】观察者模式(Observer)
- 23种设计模式(16)_行为型_观察者模式(Observer Pattern)
- (四)23种设计模式之我见-----------观察者模式(Observer)
- Java23种设计模式案例:观察者模式(observer)
- 【Unity与23种设计模式】观察者模式(Observer)
- Java开发中的23种设计模式之十五:观察者模式(Observer)
- 23种设计模式之-----观察者模式(Observer Pattern)
- Java开发中的23种设计模式详解----观察者模式(Observer)
- 设计模式与泡mm的关系之Observer观察者模式及再思考
- java设计模式学习系列之六:Observer, 观察者模式---小例
- 设计模式示例四 Observer(观察者)和Iterator(迭代器)
- 设计模式笔记--行为型模式之七Observer--观察者
- 设计模式笔记 18. Observer 观察者模式(行为型模式)
- .NET实用设计模式:观察者模式(Observer)
- 设计模式之Observer(观察者)
- 我读设计模式之观察者模式(Observer Pattern)
- 设计模式之观察者(Observer)模式与其C++通用实现(上)