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

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

  • 相关阅读:
    阅读笔记 The Impact of Imbalanced Training Data for Convolutional Neural Networks [DegreeProject2015] 数据分析型
    web网站——apache和nginx对比02
    web网站——理论01
    云计算openstack——云计算、大数据、人工智能(16)
    yum管理——ningx部署私有repo源(4)
    zabbix-web监控
    zabbix-自定义监控
    zabbix-邮件报警
    zabbix-自动发现并监控
    web网站——nginx,LNMP部署03
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4720754.html
Copyright © 2011-2022 走看看