首页 > 代码库 > 设计模式之-观察者模式
设计模式之-观察者模式
该文代码来自设计模式之惮一书。
观察者模式定义:
观察者模式也叫做发布订阅模式。
观察者模式中的角色:
1、被观察者
被观察者职责为管理观察者并通知观察者。
2、观察者
对接受到的消息进行处理。
/// <summary> /// 被观察者 /// </summary> public abstract class Subject { /// <summary> /// 观察者集合 /// </summary> private List<IObservable> observableList = new List<IObservable>(); /// <summary> /// 增加观察者 /// </summary> /// <param name="observable">观察者</param> public void AddAbservable(IObservable observable) { this.observableList.Add(observable); } /// <summary> /// 删除观察者 /// </summary> /// <param name="observable">观察者</param> public void DeleteAbservable(IObservable observable) { this.observableList.Remove(observable); } /// <summary> /// 通知所有的观察者 /// </summary> /// <param name="context">通知内容</param> public virtual void NotifyMessage(string context) { Parallel.ForEach(this.observableList, p => p.Update()); } }
/// <summary> /// 观察者 /// </summary> public interface IObservable { /// <summary> /// 更新方法 /// </summary> void Update(); }
/// <summary> /// 具体的被观察者 /// </summary> public class ConcreteSubject : Subject { /// <summary> /// 具体业务 /// </summary> public void DoSomething() { base.NotifyMessage(""); } }
/// <summary> /// 具体观察者 /// </summary> public class ConcreteObservable : IObservable { /// <summary> /// 更新(接收处理消息) /// </summary> public void Update() { //todo } }
[TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var subject = new ConcreteSubject(); var obs = new ConcreteObservable(); subject.AddAbservable(obs); subject.DoSomething(); } }
详细细节查看设计模式之惮一书-观察者模式.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。