观察者模式(observer行为)c#简单的例子
2015-08-11 13:24
531 查看
观察者模式(observer行为)c#简单的例子
几点:模式使观察目标和实现松耦合之间的依赖关系、通知会传播自己主动
样本:玩家击中后发生一系列变化的敌人:后发爆炸、敌人少1一个....
此文件由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688
几点:模式使观察目标和实现松耦合之间的依赖关系、通知会传播自己主动
样本:玩家击中后发生一系列变化的敌人:后发爆炸、敌人少1一个....
namespace adapterpattern { public partial class ObserverForm : Form { public ObserverForm() { InitializeComponent(); BaseData.EnemyNumber = 100; } private void btnDisplay_Click(object sender, EventArgs e) { IObserver explosionEvent = new ExplosionEvent();//观察员1 IObserver enemy = new Enemy();//观察员2 player p1 = new player1(); p1.AddObserver(explosionEvent); p1.AddObserver(enemy); listBox1.Items.Add(p1.Display()); } } public static class BaseData//数据中转站 { public static string DisplayString { get; set; } public static int EnemyNumber { get; set; } } public abstract class player { List<IObserver> observers = new List<IObserver>();//观察员列表 protected virtual void Notify()//遂个通知观察员 { foreach (IObserver observer in observers) { observer.Update(); } } public virtual void AddObserver(IObserver observer)//添加观察员 { observers.Add(observer); } public virtual void Delet(IObserver observer)//删除观察员 { observers.Remove(observer); } public abstract string Display(); } public class player1 : player { public override string Display() { Notify();//通知观察员; return BaseData.DisplayString + BaseData.EnemyNumber.ToString(); } } public interface IObserver//观察员接口 { void Update(); } public class ExplosionEvent : IObserver //观察员1 { public void Update() { BaseData.DisplayString = "显示爆炸"; } } public class Enemy : IObserver //观察员2 { public void Update() { BaseData.EnemyNumber -= 1; //"敌人数降低1个"; } } }
此文件由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688
相关文章推荐
- 使用PostSharp在.NET平台上实现AOP (c# AOP)
- C# 求时间差
- 引用一个自定义类库中不包含相应的实体类
- C#中静态函数的作用
- C# 知识回顾 - 扩展方法解析
- C#开发COM组件
- C#语法笔记
- C#中的系统时间获取问题
- 用c#编写爬虫在marinetraffic下载船只图片
- C# 反射
- C#怎样从指定服务器上下载指定文件到本地电脑上
- C# 对象、文件与二进制串(byte数组)之间的转换
- C# winform backgroundWorker用法
- C# Stream 和 byte[] 之间的转换,字符串可以转换成byte[]
- C#在后台运行操作:BackgroundWorker的用法
- C# 如何在winform中嵌入Excel,内嵌Excel,word
- C# WinForm判断程序是否运行,且只能运行单个实例
- C# 方法的回调(上)
- C#接口和抽象类的区别
- c# 建立局域网远程共享连接,读取共享文件