• 2019年 7月12日 观察者模式 带委托


    ---恢复内容开始---

    1.例子:神奇的猫 例子来自于 网上

    猫委托 为最开始的 还有非空判断

    public class CAT
        {
            public event Action MiaoHandler;//定义一个委托事件
            public void MiaoEvent()
            {
                Console.WriteLine("{0} 神奇的猫开始叫....", this.GetType().Name);
                if(this.MiaoHandler!=null)
                {
                    foreach (Action observer in this.MiaoHandler.GetInvocationList())
                    {
                        observer.Invoke();
                    }
                }
                Console.Read();
            }
        }

    老鼠

    public class Mouse
        {
            public void Run()
            {
                Console.WriteLine("{0} 跑了", this.GetType().Name);
            }
        }

    public class Dog
        {
            public void wang()
            {
                Console.WriteLine("{0} 汪汪汪", this.GetType().Name);
            }
        }

    小偷

    public  class Stealer
        {
            public void Hide()
            {
                Console.Write("{0} 藏起来", this.GetType().Name);
            }
        }

    婴儿

     public  class Baby
        {
            public void Cry()
            {
                Console.Write("{0} 哭了", this.GetType().Name);
            }
        }

    母亲

    public class Mother
        {
            public void Whisper()
            {
                Console.Write("{0} 开始说话", this.GetType().Name);
            }
        }

    主程序入口 实例化猫 然后把其他的都+到猫的 程序一开始 运行猫的 然后 依次运行委托事件

     class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    Console.WriteLine("*******************观察者模式事件委托实现*******************");
                    CAT cAT = new CAT();
                    cAT.MiaoHandler +=new Mouse().Run;
                    cAT.MiaoHandler += new Baby().Cry;
                    cAT.MiaoHandler += new Dog().wang;
                    cAT.MiaoHandler += new Mother().Whisper;
                    cAT.MiaoHandler += new Stealer().Hide;
                    cAT.MiaoEvent();
    
                }
                catch (Exception ex)
                {
    
                    Console.WriteLine(ex.Message);
                }
                Console.Read();
            }
        }
  • 相关阅读:
    set RowCount 与 top n
    Ubuntu 12.04 64bit 安装编译GCC 4.1.2 绝对原创
    C语言第11课
    Cocos2d-x之MenuItem
    wamp 已安装cakephp Fatal error: You must enable the intl extension to use CakePHP. in XXX
    jQuery性能优化38建议---最引人注目的用户体验!
    在面对变化,撇开NO
    批学习
    JAVA修饰符类型(public,protected,private,friendly)
    【Espruino】NO.15 nRF24L01+无线收发器
  • 原文地址:https://www.cnblogs.com/hanzhuopeng/p/11178446.html
Copyright © 2020-2023  润新知