委派模式(delegate)

一句话总结

干活是你的(普通员工),功劳算我的(项目经理)

内容

不是23中设计模式的一种,是静态代理和策略模式的一种特殊的组合。

场景

项目经理派发任务,Dispatcher分发
由3个角色组成:客户请求(Boss),委派者(Leader),被委派者(Target)


项目经理分发任务.png

项目经理:是Boss和员工之间的中介,和静态代理的区别是项目经理是全权代理,而代理是代理人在目标对象之前或之后做些事情,真正做决定的是目标对象。
项目经理:分配任务时需要根据做选择,即根据每个员工的特点来选择做什么功能,是策略模式。

url类图

委派模式.png

代码实现

public interface ITarget {

    public void doing(String 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 + "工作");
    }
}
public class Leader implements  ITarget {

    private Map targets = new HashMap();

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

    //项目经理自己不干活
    public void doing(String command){
        targets.get(command).doing(command);
    }

}
public class Boss {

    public static void main(String[] args) {
        new Leader().doing("登录");
    }

}

输出结果


输出结果.png

你可能感兴趣的:(委派模式(delegate))