设计模式--委派模式

委派模式(Delegate)
应用场景:不属于23 种设计模式之一,是面向对象设计模式中常用的一种模式。这种模式的原理为类B和类A 是两个互相没有任何关系的类,B 具有和A 一模一样的方法和属性;并且调用B 中的方法,属性就是调用A 中同名的方法和属性。B 好像就是一个受A 授权委托的中介。第三方的代码不需要知道A 的存在,也不需要和A 发生直接的联系,通过B 就可以直接使用A 的功能,这样既能够使用到A 的各种功能,又能够很好的将A 保护起来了,一举两得。

在这里插入图片描述
在这里插入图片描述

综上,委派模式就是一种跟代理模式有点类似,但是他的委派类全权代理,而不是像代理模式是部分代理。与策略模式对比,策略模式注重的是外部扩展,而委派模式注重的是外部的灵活调用。

讲完委派模式的概念,下面来看一个老板委派经理去分配任务的实现:
类图如图:

image.png

下面来实现一下代码:
实现一个Target接口,这个是作为委派者和被委派者共同的接口。

public interface ITarget {
    void doing(String command);
}

然后实现客户端:boss

public class Boss {

    public static void main(String[] args) {
        /**
         * 客户请求(Boss)、委派者(Leader)、被委派者(ITarget)
         *
         * 委派者要持有被委派者的引用
         * 代理模式:注重的是过程   委派模式注重的是结果
         * 策略模式注重的是扩展(外部扩展),委派模式注重的是内部的灵活和复用。
         */
        new Leader().doing("加密");
    }

委派者:经理

public class Leader implements ITarget {

    private Map<String,ITarget> target=new HashMap<String,ITarget>();

    public Leader() {
        target.put("加密",new TargetA());
        target.put("登录",new TargetB());
    }

    public void doingMethod(String command){
    }

    /**项目经理自己不干活,分配给别人干活。*/
    @Override
    public void doing(String command) {
        target.get(command).doing(command);
    }
}

被委派者

public class TargetA implements ITarget{
    @Override
    public void doing(String command) {
        System.out.println("我是员工A:开始干"+command+"");
    }
}

public class TargetB implements ITarget {
    @Override
    public void doing(String command) {
        System.out.println("我是员工B:开始干"+command+"");
    }
}

执行老板对经理的委派,输出如下:
注意:这里老板不关注谁实现,只是把需要实现什么委派给经理,经理自己去分配给需要的人去工作。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值