📄 observer.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignDll
{
/************************************************************************
* 观擦者模式;(Observer) 定义了一种一对多的依赖关系,让多个观察者者对象同时
* 监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,
* 使它们能够自动更新自已
* **********************************************************************/
/// <summary>
/// 抽象主题通知者
/// </summary>
abstract class Subject
{
private IList<Observer> observers = new List<Observer>();
/// <summary>
/// 增加观察者
/// </summary>
public void AddObserver(Observer observer)
{
observers.Add(observer);
}
/// <summary>
/// 删除观察者
/// </summary>
/// <param name="observer"></param>
public void DelObserver(Observer observer)
{
observers.Remove(observer);
}
/// <summary>
/// 通知观察者
/// </summary>
public void Noitfy()
{
foreach (Observer o in observers)
{
o.Update();
}
}
}
/// <summary>
/// 抽象观察者类
/// </summary>
abstract class Observer
{
public abstract void Update();
}
/// <summary>
/// 具体通知者类
/// </summary>
class ConcreteSubject : Subject
{
private string subjectState;
public string SubjectState
{
get { return subjectState; }
set { subjectState = value; }
}
}
/// <summary>
/// 具体通知者类
/// </summary>
class ConcreteObserver : Observer
{
//姓名
private string name;
//观察状态
private string ObserverState;
//通知对象
private ConcreteSubject subject;
public ConcreteObserver(string sName, ConcreteSubject ConSubject)
{
this.name = sName;
this.subject = ConSubject;
}
// 更新参数
public override void Update()
{
//throw new Exception("The method or operation is not implemented.");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -