观察者模式(observer行为)c#简单的例子
几点:模式使观察目标和实现松耦合之间的依赖关系、通知会传播自己主动
样本:玩家击中后发生一系列变化的敌人:后发爆炸、敌人少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
版权声明:本文博客原创文章。博客,未经同意,不得转载。