设计模式之观察者模式
2017-10-24 12:01
225 查看
代码执行:
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(); }
3、具体的主题类
// 具体的主题类 public class ConcreteSubject1 : Subject { // 主题类的一个信息 private string subState; public string SubState { get { return subState; } set { subState = value; // 当主题类信息发生改变时通知观察者 NoticeObserver(); } } }
4、具体的观察者类
// 具体的观察者类 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); } }
相关文章推荐
- PHP 设计模式之观察者模式
- 设计模式----观察者模式
- 设计模式——观察者模式详解
- 设计模式20-观察者模式
- Java设计模式2:观察者模式2(使用java内置的观察者)
- 26设计模式之观察者模式
- 设计模式——观察者
- 游戏系统设计开发之观察者模式
- Android设计模式应用---观察者模式
- 设计模式实例学习-观察者模式
- Java设计模式之观察者模式简单介绍
- IOS设计模式之三(适配器模式,观察者模式)
- 一天一个设计模式---观察者模式
- 设计模式_观察者模式
- 设计模式之观察者模式 Observer
- 设计模式--观察者模式【Observer Pattern】
- 设计模式(3)——观察者模式(Observer Pattern)
- 设计模式之观察者模式(Observable与Observer)
- 学习php设计模式 php实现观察者模式(Observer)
- 设计模式之观察者模式