• 6.设计模式委派模式(行为型) Java


    资料:https://gitee.com/chuanqi1995/java

    案例

    BOSS发出指令

    package com;
    
    
    public class Boss {
        public void command(String task,Leader leader){
            leader.doing(task);
        }
    }
    

    抽象任务角色

    定义一个抽象接口,有若干实现类

    package com;
    
    
    public interface IEmployee {
        void doing(String task);
    }
    

    具体任务角色

    真正执行任务的角色

    package com;
    
    
    public class EmployeeA implements IEmployee {
        protected String goodAt = "编程";
        public void doing(String task) {
            System.out.println("我是员工A,我擅长" + goodAt + ",现在开始做" +task + "工作");
        }
    }
    
    package com;
    
    
    public class EmployeeB implements IEmployee {
        protected String goodAt = "平面设计";
        public void doing(String task) {
            System.out.println("我是员工B,我擅长" + goodAt + ",现在开始做" +task + "工作");
        }
    }
    

    委派者角色

    负责在各个角色实例之间做出决策,并判断调用具体的实现方法

    package com;
    
    import java.util.HashMap;
    import java.util.Map;
    
    
    public class Leader implements IEmployee {
    
        private Map<String, IEmployee> employee = new HashMap<String, IEmployee>();
    
        public Leader(){
            employee.put("爬虫",new EmployeeA());
            employee.put("海报图",new EmployeeB());
        }
    
        public void doing(String task) {
            if(!employee.containsKey(task)){
                System.out.println("这个任务" +task + "超出我的能力范围");
                return;
            }
            employee.get(task).doing(task);
        }
    }
    

    调用

    package com;
    
    
    public class Test {
        public static void main(String[] args) {
            new Boss().command("海报图",new Leader());
            new Boss().command("爬虫",new Leader());
            new Boss().command("卖手机",new Leader());
        }
    }
    

    委派模式与代理模式的区别

    委派模式与代理模式的区别:(拿领导、经理、员工来举例)

    1. 代理模式:领导 明确知道 我要找员工A干活,但是我不直接找员工A,我去找经理,让经理去找员工A;

      重点:领导明确知道员工A的存在(代理对象代理时要传入被代理类),所以,经理也只会去找员工A(经理代理员工A),类似于:一对一对一的关系;

    2. 委派模式:领导不关心有哪些员工,不需要知道员工,我直接说出我的需求,去找经理,经理根据领导的需求去找能够干这个活的员工(如:加密就去找员工A、数据处理就去找员工B);
      重点:领导不知道有哪些员工,领导只关心经理是谁以及他的需求是什么,只管去找经理,让他去找员工完成他的事情,类似于:一对一对多的关系(员工是多个)

    委派主要解决什么问题,什么情况下要委派。

    将不同的任务分给不同的类,让不同的类职责变得单一,当任务比较大时,可以通过委派模式将任务分发给不同的类执行。委派者不会做或者没有做该事情,而是把具体的事情交给了具体类。

  • 相关阅读:
    pom.xml 报错
    微信支付,提示当前页面URL未注册
    echarts + highcharts 柱状图
    二维码生成
    Eclipse
    SQLServer 安装及配置
    模板引擎doT.js用法详解
    SQL Server 笔记
    Flex 弹性盒模型
    查看Linux是Redhat 还是centos 还是...
  • 原文地址:https://www.cnblogs.com/chuanqi1995/p/16045700.html
Copyright © 2020-2023  润新知