• 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();
            }
        }
  • 相关阅读:
    硬币游戏 Project Euler 232
    屏幕空间的近似全局光照明(Approximative Global Illumination in Screen Space)
    四维之美
    vertex texture fetching in HLSL, and heightfield normal calculation
    一个VS小插件(跳出括号)
    我的算法书籍收藏
    Algorithms.算法概论.习题答案
    UML用例图教程详解
    大连理工大学软件学院博客地址
    快递查询API,我推荐“爱快递”
  • 原文地址:https://www.cnblogs.com/hanzhuopeng/p/11178446.html
Copyright © 2020-2023  润新知