委派模式- 2019-10-10 20:40- 设计模式: 设计模式,委派模式
委派模式就是 静态代理模式+策略模式 的一种特殊模式 spring中以Delegate结尾的都是委派模式 委派对象持有被委派对象的引用
demo
模拟老板下达命令给经理,经理再通过命令调动相应的人执行
/**
* 员工
*
* @author Bai
* @date 2020/12/2 23:04
*/
public interface Employee {
/**
* 根据命令做事
*
* @param command
*/
void doing(String command);
}
/**
* 员工A
*
* @author Bai
* @date 2020/12/2 23:08
*/
public class EmployeeA implements Employee {
@Override
public void doing(String command) {
System.out.println("员工A执行" + command + "命令,开始干活了");
}
}
/**
* @author Bai
* @date 2020/12/2 23:09
*/
public class EmployeeB implements Employee {
@Override
public void doing(String command) {
System.out.println("员工B执行" + command + "命令,开始干活了");
}
}
/**
* 经理 委派对象
*
* @author Bai
* @date 2020/12/2 23:09
*/
public class Leader implements Employee {
/**
* 命令:员工(静态模式的体现)
*/
private static Map<String, Employee> employeeMap = new HashMap<>();
{
employeeMap.put("搬砖", new EmployeeA());
employeeMap.put("扫地", new EmployeeB());
}
/**
* 根据命令委派
*
* @param command
*/
@Override
public void doing(String command) {
employeeMap.get(command).doing(command);
}
}
/**
* @author Bai
* @date 2020/12/2 23:13
*/
public class Boss {
/**
* 老板下命令 ,经理接收 并委派下去
*
* @param command
* @param leader
*/
public static void command(String command, Leader leader) {
leader.doing(command);
}
}
@Test
public void demo() {
Leader leader = new Leader();
//策略模式的体现
Boss.command("搬砖", leader);
Boss.command("扫地", leader);
}
**