C#设计模式- 观察者模式(4)
来源:互联网 发布:小型公司网络搭建 编辑:程序博客网 时间:2024/05/24 03:30
using System;using System.Collections.Generic;using System.Text;namespace 观察者模式{ class Program { static void Main(string[] args) { //老板胡汉三 Boss huhansan = new Boss(); //看股票的同事 StockObserver tongshi1 = new StockObserver("魏关姹", huhansan); //看NBA的同事 NBAObserver tongshi2 = new NBAObserver("易管查", huhansan); huhansan.Attach(tongshi1); huhansan.Attach(tongshi2); huhansan.Detach(tongshi1); //老板回来 huhansan.SubjectState = "我胡汉三回来了!"; //发出通知 huhansan.Notify(); Console.Read(); } } //通知者接口 interface Subject { void Attach(Observer observer); void Detach(Observer observer); void Notify(); string SubjectState { get; set; } } class Secretary : Subject { //同事列表 private IList<Observer> observers = new List<Observer>(); private string action; //增加 public void Attach(Observer observer) { observers.Add(observer); } //减少 public void Detach(Observer observer) { observers.Remove(observer); } //通知 public void Notify() { foreach (Observer o in observers) o.Update(); } //前台状态 public string SubjectState { get { return action; } set { action = value; } } } class Boss : Subject { //同事列表 private IList<Observer> observers = new List<Observer>(); private string action; //增加 public void Attach(Observer observer) { observers.Add(observer); } //减少 public void Detach(Observer observer) { observers.Remove(observer); } //通知 public void Notify() { foreach (Observer o in observers) o.Update(); } //老板状态 public string SubjectState { get { return action; } set { action = value; } } } //抽象观察者 abstract class Observer { protected string name; protected Subject sub; public Observer(string name, Subject sub) { this.name = name; this.sub = sub; } public abstract void Update(); } //看股票的同事 class StockObserver : Observer { public StockObserver(string name, Subject sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0} {1} 关闭股票行情,继续工作!", sub.SubjectState, name); } } //看NBA的同事 class NBAObserver : Observer { public NBAObserver(string name, Subject sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0} {1} 关闭NBA直播,继续工作!", sub.SubjectState, name); } }}
0 0
- C#设计模式- 观察者模式(4)
- C#设计模式- 观察者模式(1)
- C#设计模式- 观察者模式(2)
- C#设计模式- 观察者模式(3)
- C#设计模式- 观察者模式(5)
- C#设计模式观察者
- C# 观察者设计模式
- C#观察者模式设计
- c# 设计模式:观察者模式
- c#设计模式-观察者模式
- c# 设计模式:观察者模式
- c#设计模式-观察者模式
- 【C#设计模式-观察者模式】
- c#设计模式-观察者模式
- C#设计模式之观察者
- c#中的观察者设计模式
- 设计模式学习(4)观察者模式
- 设计模式-观察者模式(4)
- C#上机练习2
- POJ2718——Smallest Difference(暴力瞎搞)
- Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo
- 在gdb中显示源码 -- gdbtui使用方法
- 安卓热修复之——大搜集
- C#设计模式- 观察者模式(4)
- 详解Unity Profiler内存分析问题
- UILabel设背景颜色的时候出现一条线条
- Python中使用Beautiful Soup库的超详细教程
- Android studio 运行出现Error running app: This version of Android Studio is incompatible with the Gradle
- ruby + cucumber环境搭建
- angular跨域和session失效问题
- hbase集群搭建
- 表达式求值(栈实现)