委派模式- 2019-10-10 20:40- 设计模式: 设计模式,委派模式


委派模式就是 静态代理模式+策略模式 的一种特殊模式 spring中以Delegate结尾的都是委派模式 委派对象持有被委派对象的引用

demo

模拟老板下达命令给经理,经理再通过命令调动相应的人执行

  1. /**
  2. * 员工
  3. *
  4. * @author Bai
  5. * @date 2020/12/2 23:04
  6. */
  7. public interface Employee {
  8. /**
  9. * 根据命令做事
  10. *
  11. * @param command
  12. */
  13. void doing(String command);
  14. }
  1. /**
  2. * 员工A
  3. *
  4. * @author Bai
  5. * @date 2020/12/2 23:08
  6. */
  7. public class EmployeeA implements Employee {
  8. @Override
  9. public void doing(String command) {
  10. System.out.println("员工A执行" + command + "命令,开始干活了");
  11. }
  12. }
  1. /**
  2. * @author Bai
  3. * @date 2020/12/2 23:09
  4. */
  5. public class EmployeeB implements Employee {
  6. @Override
  7. public void doing(String command) {
  8. System.out.println("员工B执行" + command + "命令,开始干活了");
  9. }
  10. }
  1. /**
  2. * 经理 委派对象
  3. *
  4. * @author Bai
  5. * @date 2020/12/2 23:09
  6. */
  7. public class Leader implements Employee {
  8. /**
  9. * 命令:员工(静态模式的体现)
  10. */
  11. private static Map<String, Employee> employeeMap = new HashMap<>();
  12. {
  13. employeeMap.put("搬砖", new EmployeeA());
  14. employeeMap.put("扫地", new EmployeeB());
  15. }
  16. /**
  17. * 根据命令委派
  18. *
  19. * @param command
  20. */
  21. @Override
  22. public void doing(String command) {
  23. employeeMap.get(command).doing(command);
  24. }
  25. }
  1. /**
  2. * @author Bai
  3. * @date 2020/12/2 23:13
  4. */
  5. public class Boss {
  6. /**
  7. * 老板下命令 ,经理接收 并委派下去
  8. *
  9. * @param command
  10. * @param leader
  11. */
  12. public static void command(String command, Leader leader) {
  13. leader.doing(command);
  14. }
  15. }
  1. @Test
  2. public void demo() {
  3. Leader leader = new Leader();
  4. //策略模式的体现
  5. Boss.command("搬砖", leader);
  6. Boss.command("扫地", leader);
  7. }

**