设计模式之观察者模式
来源:互联网 发布:绑定域名和空间 编辑:程序博客网 时间:2024/06/06 13:01
代码执行:
static void Main(string[] args) { ConcreteSubject1 sub1 = new ConcreteSubject1(); // 两者进行联系 ConcreteObserver1 ob1 = new ConcreteObserver1(sub1); sub1.RegisterObserver(ob1); // sub1.SubState = "不睦沙卡拉卡"; Console.Read(); }
1、主题类接口
// 相当于天气的变化 // 主题类接口 public abstract class Subject { List<Observer> list = new List<Observer>(); // 注册观察者 public void RegisterObserver(Observer ob) { list.Add(ob); } // 移除观察者 public void RemoveObserver(Observer ob) { list.Remove(ob); } // 当主题类发生改变时通知观察者 public void NoticeObserver() { foreach (Observer ob in list) { ob.Update(); } } }
2、观察者接口
// 相当于天气预报的显示板 // 观察者类接口 public abstract class Observer { // 显示主题类改变了什么 public abstract void Update(); }
// 具体的主题类 public class ConcreteSubject1 : Subject { // 主题类的一个信息 private string subState; public string SubState { get { return subState; } set { subState = value; // 当主题类信息发生改变时通知观察者 NoticeObserver(); } } }
// 具体的观察者类 public class ConcreteObserver1 : Observer { // 具体的那个主题类要视情况而定 public ConcreteSubject1 sub; // 不要在内部 new 观察者,要在Main函数里面 new ,那样还可以注册观察者 // 否则的话,在里面 new 的观察者是没有被注册的 public ConcreteObserver1(ConcreteSubject1 sub) { this.sub = sub; } public override void Update() { // 显示板显示新的内容 Console.WriteLine("Oberver1更新显示: " + sub.SubState); } }
阅读全文
0 0
- 设计模式之-观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 数据库学习笔记(1):SELECT 各子句的执行顺序
- Linux 死锁检测模块 Lockdep 简介
- 持续交付就得靠容器
- Spring--5.bean管理 依赖注入(xml)
- python的快速排序
- 设计模式之观察者模式
- S32K144 EVB之GPIO
- 初学Python第五天
- Laravel重定向,a链接跳转,控制器跳转
- Mysql的row_format(fixed与dynamic)
- spark-scala版的PageRank
- webAppRootKey
- 如何在Intellij IDEA中修改快捷键
- android Spinner控件详解