zoukankan      html  css  js  c++  java
  • 用委托实现插件式编程

    我们可以利用“委托是一个能把方法作为参数传递的对象”这一特点,来实现一种插件式编程。

    例如,我们有一个Utility类,这个类实现一个通用方法(Calculate),用来执行任何有一个整型参数和整型返回值的方法。这样说有点抽象,下面来看一个例子:

    delegate int Calculator(int x);
    class Program 
    {      
         static int Double(int x) 
         { 
                return x * 2;
         }     
         static void Main(string[] args) 
         {         
                int[] values = { 1,2,3,4};         
                Utility.Calculate(values, Double);          
                foreach (int i in values)             
                    Console.Write(i + " "); // 2 4 6 8                             
               Console.ReadKey();     
         } 
    } 
    class Utility 
    {     
        public static void Calculate(int[] values, Calculator c)
        {         
             for (int i = 0; i < values.Length; i++)             
             values[i] = c(values[i]);     
        } 
    }                                                                     

    这个例子中的Utility是固定不变的,程序实现了整数的Double功能。我们可以把这个Double方法看作是一个插件,如果将来还要实现诸如求平方、求立方的计算,我们只需向程序中不断添加插件就可以了。

    如果Double方法是临时的,只调用一次,若在整个程序中不会有第二次调用,那么我们可以在Main方法中更简洁更灵活的使用这种插件式编程,无需先定义方法,使用λ表达式即可,如:

    Utility.Calculate(values, x => x * 2); 
  • 相关阅读:
    内存溢出和内存泄漏的区别、产生原因以及解决方案
    HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
    TCP, UDP, HTTP, HTTPS协议
    测试面试常见面试题汇总
    SDK测试方法
    App弱网测试工具--Qnet
    PerfDog性能狗移动端性能测试工具
    Jmeter作用域
    事务(转账功能)
    DBUtils
  • 原文地址:https://www.cnblogs.com/XiaoRuLiang/p/12422719.html
Copyright © 2011-2022 走看看