c#观察者模式
来源:互联网 发布:岛国软件免费下载 编辑:程序博客网 时间:2024/05/02 04:42
class Program { static void Main(string[] args) { Subject subject = new Subject(); // Observer1 takes a subscription to the store Observer observer1 = new Observer("Observer 1"); subject.Subscribe(observer1); // Observer2 also subscribes to the store subject.Subscribe(new Observer("Observer 2")); subject.Inventory++; // Observer1 unsubscribes and Observer3 subscribes to notifications. subject.Unsubscribe(observer1); subject.Subscribe(new Observer("Observer 3")); subject.Inventory++; Console.ReadLine(); } } /// <summary> /// 订阅信息接口 /// </summary> interface ISubject { /// <summary> /// 订阅信息 /// </summary> /// <param name="observer">要观察的目标对象</param> void Subscribe(Observer observer); void Unsubscribe(Observer observer); /// <summary> /// 消息通知 /// </summary> void Notify(); } public class Subject : ISubject { private List<Observer> observers = new List<Observer>(); private int _int; public int Inventory { get { return _int; } set { // Just to make sure that if there is an increase in inventory // then only we are notifying the observers. if (value > _int) Notify(); _int = value; } } public void Subscribe(Observer observer) { observers.Add(observer); } public void Unsubscribe(Observer observer) { observers.Remove(observer); } public void Notify() { observers.ForEach(x => x.Update()); } } interface IObserver { void Update(); } public class Observer : IObserver { public string ObserverName { get; private set; } public Observer(string name) { this.ObserverName = name; } public void Update() { Console.WriteLine("{0}: A new product has arrived at the store", this.ObserverName); } }
输出如下内容:
0 0
- C# 之观察者模式
- C#中的观察者模式
- c#观察者模式
- c# 观察者模式
- C#设计模式观察者
- C# 观察者模式.
- c#观察者模式
- c#之观察者模式
- C# 观察者设计模式
- C#观察者模式设计
- C#观察者模式
- C#观察者模式
- c# 设计模式:观察者模式
- c#设计模式-观察者模式
- c# 设计模式:观察者模式
- c#设计模式-观察者模式
- 【C#设计模式-观察者模式】
- c#设计模式-观察者模式
- 关于字符变量的一些总结
- 专业化数据库设计
- buffer 与cache 的区别
- Android中关于Volley的使用(三)认识Volley的架构
- JavaScript 继承
- c#观察者模式
- [CVE-2014-2323][7.5] lighttp mod_mysql_vhost 注入漏洞
- jQuery选择器总结
- FineReport图表详述之图表交互功能
- 长痘痘不能吃哪些食物
- JavaScript继承详解(二)
- Android中关于Volley的使用(四)利用NetworkImageView来加载图片
- Swift基础--解析服务器Json内容
- 给定一个字符串,求出其最长的子字符串