一风子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

代理是把同样的方法赋予对方

委托是创建和某个对象同样的方法

两个合并起来操作,如下:

public class DelegateAndAgentPattern
{
    public void Main()
    {
        Boss boss = new Boss();
        Secretary secretary = new Secretary(boss);
        secretary.PayWages();
        secretary.GiveOutWelfare();
    }
}

/// <summary>
/// 老板类
/// </summary>
class Boss
{
    public void PayWages()
    {
        Console.WriteLine("老板发工资了!");
    }

    public void GiveOutWelfare()
    {
        Console.WriteLine("老板发福利了!");
    }
        
}

/// <summary>
/// 一个有老板的秘书,老板吩咐你这些事情可以做
/// </summary>
class Secretary
{
    private Boss boss;

    /// <summary>
    /// 找个老板
    /// </summary>
    /// <param name="boss"></param>
    public Secretary(Boss boss)
    {
        this.boss = boss;
    }

    /// <summary>
    /// 老板说你可以代我发工资
    /// </summary>
    public void PayWages()
    {
        boss.PayWages();
    }

    /// <summary>
    /// 老板说你可以代我发福利
    /// </summary>
    public void GiveOutWelfare()
    {
        boss.GiveOutWelfare();
    }
}

这种组合用于客户端等待服务器回调,到来后可以调用,通知请求者。

posted on 2020-06-01 22:07  一风子  阅读(42)  评论(0)    收藏  举报