加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Observer.cs 1.88 KB
一键复制 编辑 原始数据 按行查看 历史
宋立昌 提交于 2022-04-08 04:05 . 增加程序
using System;
/// <summary>
/// 建立观察者基类(单行为,多行为)
/// </summary>
namespace DelegateEvent
{
/**//// <summary>
/// 在Observer Pattern(观察者模式)中,此类作为所有Observer(观察者)的抽象基类
/// 所有要充当观察者的类(在此事例中为"老鼠"和"人")都继承于此类.
/// 我们说此类作为观察者基类,用于规划所有观察者(即订阅方)订阅行为.
/// 在此事例中,规划了针对目标基类(ModelBase)中声明的"无参无返回"委托的一个
/// 方法(Response),并于构造该观察者时将其注册于具体目标(参数传递)的委托事件中.
/// 具体实施过程:
/// 1.指定观察者所观察的对象(即发布方).(通过构造器传递)
/// 2.规划观察者自身需要作出响应方法列表
/// 3.注册需要委托执行的方法.(通过构造器实现)
/// </summary>
public abstract class Observer
{
/**//// <summary>
/// 构造时通过传入模型对象,把观察者与模型关联,并完成订阅.
/// 在此确定需要观察的模型对象.
/// </summary>
/// <param name="childModel">需要观察的对象</param>
public Observer(ModelBase childModel)
{
//订阅
//把观察者行为(这里是Response)注册于委托事件
childModel.SubEvent += new ModelBase.SubEventHandler(Response);
}
/**//// <summary>
/// 规划了观察者的一种行为(方法),所有派生于该观察者基类的具体观察者都
/// 通过覆盖该方法来实现作出响应的行为.
/// </summary>
public abstract void Response();
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化