zoukankan      html  css  js  c++  java
  • 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();
            }
        }
  • 相关阅读:
    seajs加载angularjs
    seajs加载jquery提示$ is not a function
    java 动态代理
    C#第三章--对象和类
    Android笔记--两种双击退出程序的方法
    Android--Volley基本用法及自定义
    Win10专业版只要12.99元?应用商店Bug福利也算数
    新人报道
    排序

  • 原文地址:https://www.cnblogs.com/hanzhuopeng/p/11178446.html
Copyright © 2011-2022 走看看