zoukankan      html  css  js  c++  java
  • 委托

    委托声明

    可以声名在类的外面 ,也可以是在类的内部

    委托跟方法很像:也有返回值,有参数,用一个delegate关键字修饰;可以在类的内部声明,可以在类的外部声明
    委托可以实例化 ,在实例化的时候需要传递一个方法进来
    把方法当做参数的
    在实例化的时候要求传递的方法结构和委托一直 :要求参数 和返回值一致
     1  public delegate void NoRunturnNoParameter();//没有返回值  没有形参
     2         public delegate void NoRunturn(int x, int y);//没有返回值 有形参
     3         public delegate int RunturnNoParameter();//没有返回值 没有形参
     4         public delegate int Runturn(int x, int y);//没有返回值 有形参
     5         public void show()
     6         {
     7             //委托可以实例化,在实例化的时候需要传递一个方法进来
     8             NoRunturnNoParameter norunturn = new NoRunturnNoParameter(NoRunturnMethod);
     9             norunturn.Invoke();//执行这个委托,== NoRunTurnMethod();
    10             // 在实例化的时候要求传递的方法结构和委托一直 :要求参数 和返回值一直
    11             NoRunturn noRunturn = new NoRunturn(NoRunturnMethod);
    12             noRunturn.Invoke(1, 2);
    13             
    14             RunturnNoParameter runturnNoParameter = new RunturnNoParameter(RunturnIntMethod);
    15             int ruslt1 = runturnNoParameter.Invoke();
    16             
    17             Runturn runturn = new Runturn(RunturnIntParameterMethod);
    18             int ruslt2 = runturn.Invoke(1, 2);
    19         }
    20         public void NoRunturnMethod()
    21         {
    22             Console.WriteLine("这是一个无参数无返回值的方法!");
    23         }
    24         public void NoRunturnMethod(int x, int y)
    25         {
    26             Console.WriteLine("这是一个有参数无返回值的方法!");
    27         }
    28         public int RunturnIntMethod()
    29         {
    30             Console.WriteLine("这是一个有返回值 没有形参的方法");
    31             return 1;
    32         }
    33         public int RunturnIntParameterMethod(int x, int y)
    34         {
    35             Console.WriteLine("这是一个有返回值 有形参的方法");
    36             return x;
    37         }
    View Code

    委托的实质 是什么

    委托是一个类,继承了MulticastDeleGate特殊类

    通过委托传递业务逻辑以后

    1. 增加公共业务逻辑方便,只需要一个方法内部增加即可,去掉了重复代码

    2. 如果新增业务逻辑 那么逻辑由调用者提供,做到了逻辑解耦

    3. 行为型设计模式,

    委托究竟怎么使用?

    一、如果在工作中遇到代码耦合很严重:逻辑和逻辑之间应该分开,但是放在同一个方法内部的;
    二、如果代码中有很多重复代码

    委托的花式应用

    使用中间件的思想 -俄罗斯套娃(暂时不上传代码)

  • 相关阅读:
    iOS酷炫动画效果合集
    重载hash与isEqual:方法
    NSObject的hash方法
    带辉光效果的跑马灯
    线性重复动画
    TextKit简单示例
    计算一行文本的高度
    点击cell动态修改高度动画
    FastDFS图片服务器(分布式文件系统)学习。
    Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.username' in string value "${jdbc.username}"
  • 原文地址:https://www.cnblogs.com/netCat/p/14981075.html
Copyright © 2011-2022 走看看