zoukankan      html  css  js  c++  java
  • C# 中的委托和事件

    C# 中的委托和事件

    http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

        /// <summary>
        /// 不好的设计
        /// 后期增加语种需要增加改动3个地方:语种枚举、switch-case、方法
        /// </summary>
        public class BadDesign
        {
            public enum Language
            {
                English, 
                Chinese
                //add other language
            }
    
            public void GreetPeople(string name, Language lang)
            {
                switch (lang)
                {
                    case Language.English:
                        EnglishGreeting(name);
                        break;
                    case Language.Chinese:
                        ChineseGreeting(name);
                        break;
                    //add other language
                }
            }
    
            public void EnglishGreeting(string name)
            {
                Console.WriteLine("Good Morning, " + name);
            }
    
            public void ChineseGreeting(string name)
            {
                Console.WriteLine("早上好, " + name);
            }
    
            //add language method
        }
    
    
     /// <summary>
        /// 相对较好的设计
        /// 后期增加语种需要增加改动1个地方:语种方法
        /// </summary>
        class GoodDesign_Delegate
        {
            public void GreetPeople(string name, GreetingDelegate MakeGreeting)
            {
                MakeGreeting(name);
            }
    
            public void EnglishGreeting(string name)
            {
                Console.WriteLine("Good Morning, " + name);
            }
    
            public void ChineseGreeting(string name)
            {
                Console.WriteLine("早上好, " + name);
            }
    
            //add language method
        }
    
    
    public delegate void GreetingDelegate(string name);
    
    
       class Program
        {
            static void Main(string[] args)
            {
                new BadDesign().GreetPeople("nlh", Delegate_Event.BadDesign.Language.Chinese);
                new BadDesign().GreetPeople("nlh", Delegate_Event.BadDesign.Language.English);
    
                new GoodDesign_Delegate().GreetPeople("nlh", new GoodDesign_Delegate().ChineseGreeting);
                new GoodDesign_Delegate().GreetPeople("nlh", new GoodDesign_Delegate().EnglishGreeting);
                Console.Read();
            }
        }
  • 相关阅读:
    www.a.shifen.com
    gstack pstack strace
    性能分析 函数粒度 函数里的一条语句 汇编 反编译 机器指令 %rbx,%rbp
    taocrypt
    sign
    Python 3.8.0 final¶ Release date: 2019-10-14
    超线程
    Python classes to extract information from the Linux kernel /proc files.
    借助中间件优化代码 将请求RequestId在服务端接收到请求在处理业务逻辑之前生成
    JVM CPU Profiler技术原理及源码深度解析
  • 原文地址:https://www.cnblogs.com/nlh774/p/6143392.html
Copyright © 2011-2022 走看看