设计模式--观察者模式(Publish/Subscribe Mode)
来源:互联网 发布:淘宝和天猫软件的区别 编辑:程序博客网 时间:2024/05/21 10:29
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
特点:
一个对象的改变需要同时改变其他对象,而且不知道具体改变多少对象。
接触耦合,让耦合的双方都依赖于抽象,而不是依赖于具体,从而使格子的变化不会影响另一边的变化。
抽象类:
//Subject
abstract class Subject
{
private IList<Observer> observers =new List<Observer>;
//Add Observer
public void Attach(Observer observer)
{
observers.Add(observer);
}
//Detach Observer
public void Detach(Observer observer)
{
observers.Remove(observer);
}
//Notify
public void Notify()
{
foreach(Observer o in observers)
{
o.Update();
}
}
}
//Observer
abstract class Observer
{
public abstract void Update();
}
//ConcreteSubject
class ConcreteSubject : Subject
{
private string subjectState;
public string SubjectState
{
get { return subjectState; }
set { subjectState = value; }
}
}
//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;
}
public ConcreteSubject Subject
{
get { return subject; }
set { subject = value; }
}
}
接口:
interface Observer
{
void Update();
}
使用委托(不依赖抽象观察者):
interface Subject
{
void Notify();
String SubjectState
{
get;
set;
}
}
声明一个委托
delegate void EventHandler();
class ConcreteSubject: Subject
{
...
public event EventHandler Update;//声明EventHandler的委托事件Update
public void Notify()
{
Update();
}
...
}
class test
{
ConcreteSubject a = new ConcreteSubject();
ConcreteObserver b = new ConcreteObserver("bbbbb", a);
a.Update += new EventHandler(b.Update);
}
委托就是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托可以看作是对函数的抽象,是函数的“类”,委托的实例将代表一个具体的函数。
委托对象所搭载的所有方法必须具有相同的原形和形式,即拥有相同的参数列表和返回值类型。
- 设计模式--观察者模式(Publish/Subscribe Mode)
- 观察者模式 Publish/Subscribe
- [设计模式] 观察者模式(发布-订阅/Publish-subscribe模式)
- JavaScript-观察者模式(publish/subscribe)
- 设计模式之观察者模式(发布-订阅模式publish/Subscribe)
- 观察者模式(Publish/Subscribe)(C#实现)
- 订阅模式(publish-subscribe)
- 设计模式---订阅发布模式(Subscribe/Publish)
- 设计模式---订阅发布模式(Subscribe/Publish)
- 设计模式初探-观察者模式(OBSERVER)又称发布-订阅(Publish-Subscribe)依赖(Dependents)
- 观察者模式(Observer Pattern,对象行为型模式,发布-订阅模式 Publish/Subscribe Pattern)
- 订阅发布模式(Subscribe/Publish)
- 订阅发布模式(Subscribe/Publish)
- 使用Publish/Subscribe 设计模式达到对象间数据同步
- 使用Publish/Subscribe 设计模式达到对象间数据同步
- 架构设计之源:设计模式的场景分析(1)Publish-Subscribe
- Observer模式 (或称为Publish-Subscribe模式)
- ZeroMQ(java)之Publish/Subscribe模式
- QuickPart的部署以及用QuickPart包装用户控件到Moss页面的实例
- 二进制流保存到文件/二进制流浏览器输入文件
- 与Excel通讯
- CentOS用户和组管理
- JNI技术实践小结
- 设计模式--观察者模式(Publish/Subscribe Mode)
- C++11中值得关注的几大变化
- 【转】【Android游戏开发之二】剖析游戏开发用view还是surfaceView ?!
- squid作为反向代理(web缓存服务器)的应用
- gredview中全选按钮以及删除
- glibc之socket网络编程
- Scrum
- LinkedHashMap与HashMap
- sort 详细用法