设计模式(3)观察者模式
来源:互联网 发布:js e.target ie 编辑:程序博客网 时间:2024/04/28 08:13
概述
在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的
依赖对象(观察者对象)都将得到通知。如果耦合过强,代码的维护性和扩展性就会变差。这样一来就引出了观察者模
式(Observer),也称发布-订阅模式(Publish/Subscribe)。所有的操作都是通过调用接口来实现,将这种依赖关系
弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。
结构图
具体模式
抽象通知者Subject类
当观察者发生变化,通过Notify接口通知所有观察者。避免直接的实现,降低耦合。
abstract class Subject { private IList<Observer> observers = new List<Observer >(); //增加观察者 public void Attach(Observer observer) { observers.Add(observer ); } //移除观察者 public void Detach(Observer observer) { observers.Remove(observer ); } //通知 public void Notify() { foreach (Observer o in observers) { o.Update(); } } }
抽象观察者Observers类
当得到主题通知时,调用Update。称为更新接口
abstract class Observer { public abstract void Update(); } abstract class Subject
具体观察者concreteObserver类
实现抽象观察者的update接口,更新当前状态。
class ConcreteObserver : Observer { private string name; private string observerState; private ConcreteSubject subject; public ConcreteObserver(ConcreteSubject subject, string name) { this.subject = subject; this.name = name; } public override void Update() { observerState=subject.SubjectState; Console.WriteLine ("观察者{0}的状态是{1}",name,observerState ); } }
客户端
static void Main(string[] args) { ConcreteSubject a = new ConcreteSubject(); a.Attach(new ConcreteObserver (a,"b")); a.SubjectState = "状态a"; a.Notify(); Console.Read(); }
- java设计模式(3)--观察者模式
- 设计模式(3)观察者模式
- 设计模式:3)观察者模式
- C#设计模式- 观察者模式(3)
- java设计模式(3)观察者模式
- 设计模式-3-观察者模式
- 设计模式(3)--观察者模式
- 设计模式(观察者模式)
- 设计模式,行为模式(观察者模式)
- 设计模式--观察者(监听)设计模式
- 设计模式(一)观察者设计模式
- 设计模式--观察者(监听)设计模式
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- java——继承设计的技巧
- 看一遍那些晦涩的网络术语都弄明白
- 设计包含min函数的栈
- 11个强大的Visual Studio调试小技巧
- 纪念一次Ubuntu8.04下的GTK源码安装经历
- 设计模式(3)观察者模式
- window启动FTP服务器方法之一
- 在VS2010平台上创建并使用dll
- j-ui dwz j-ajax 重复刷新问题。
- 吐槽
- 解决JSP参数传递乱码的问题
- 练好英语口语
- late_initcall和module_init
- Java Compiler API 发生java.lang.NullPointerException异常解决办法