委派
委派模式有点像代理模式又有点像策略模式。例如:公司老板给项目经理下达任务,将任务全权交给项目经理,由项目经理根据一定的策略将任务分配给小组成员,项目经理从头跟到尾。项目经理就像一个受老板授权的中介,老板不需要和小组成员直接联系,甚至可以不知道他的存在。
我们员工实现同一个干活的接口
public interface ITarget {
public void doSomething(String command);
}
员工A和员工B(真正做事的人)做自己擅长的工作
public class TargetA implements ITarget {
@Override
public void doSomething(String command) {
System.out.println("我是员工A,现在开始干" + command + "");
}
}
public class TargetB implements ITarget {
@Override
public void doSomething(String command) {
System.out.println("我是员工B,现在开始干" + command + "");
}
}
项目经理持有所有的小组成员,根据一定的策略选择干活的人
public class Leader implements ITarget {
private Map<String, ITarget> targets = new HashMap<>();
/**
* 项目经理持有小组成员可供选择,类似策略模式
*/
public Leader() {
targets.put("加密", new TargetA());
targets.put("登录", new TargetB());
}
public void doSomething(String command) {
targets.get(command).doSomething(command);
}
}
领导下达命令
public class Boss {
public static void main(String[] args) {
new Leader().doSomething("登录");
}
}
从上面可以看出来委派模式就是静态代理和策略模式的一种特殊组合,代理模式注重的是过程,委派模式注重的是结果。策略模式注重的是可扩展(外部扩展),委派模式注重的是内部的灵活和复用。
相关阅读
05.01_Java语言基础(数组概述和定义格式说明)(了解) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是
1:BlockingQueue继承关系java.util.concurrent 包里的 BlockingQueue是一个接口, 继承Queue接口,Queue接口继承 Collection Blockin
1、web 是一种基于超文本和http的、全球性的、动态交互的、跨平台的分布式图形信息系统 是建立在Internet上的一种网络服务。 现
Javascript:history.go()和history.back()的用法与区
Javascript:history.go()和history.back()的用法与区别简单的说就是:go(-1):返回上一页,原页面表单中的内容会丢失;back():返回上一页
import java.awt.*;import java.awt.event.*;class ChessPad extends Panel implements MouseListener,ActionListener{int x=-1,