zoukankan      html  css  js  c++  java
  • 观察者模式(observer行为)c#简单的例子

    观察者模式(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

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    关于负数补码的求解
    二维数组的行列指针
    复杂类型的解读
    单斜杠''的思考
    HTML 文本格式化实例--常用的标签
    P1 基础知识以及客户截面 【B站 SolidWorks2014教学视频 共计20讲】
    SolidWorks 2-5 草图的绘制
    SolidWorks 2-4 草图简介
    SolidWorks 模型创建的一般过程 2019年2月25日
    P3 3.HTML&CSS基础_HTML简介 (24'22")---------- 高质量HTML与CSS基础(共103讲)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4720754.html
Copyright © 2011-2022 走看看