委派模式的实例介绍

委派模式

委派模式的基本作用就是负责任务的调度和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,委派模式注重结果。不属于GOP23种模式之一,属于行为模式。
在我们工作中,最常见的一种情况就是,当我们公司老板想做一个东西,他要找到我们项目经理发送一个命令,然后我们项目经理接受到这个命令的时候,项目经理会根据这个东西来进行对团队里面的员工来分配。所以,我们项目经理Leader就是一种委派模式,他想我们老板的命令通过委派对员工去做。这就是一个任务的全权调度和任务分配。
talk is cheap show me the code
因为我们的员工有很多个,我们先声明一个员工的统一抽象接口,定义一个方法为doWork工作。

/**
 * @description: 委派模式员工抽象接口
 * @author: Jh Lee
 * @create: 2019-03-15 23:13
 **/
public interface Employee {

    public void doWork();
}

然后我们分别创建不同技术特点的员工对象,分别都实现这个抽象员工的接口
员工A,擅长数据加密

/**
 * @description: 员工A
 * 擅长数据加密
 * @author: Jh Lee
 * @create: 2019-03-15 23:18
 **/
public class EmployeeA implements Employee {
    @Override
    public void doWork() {
        System.out.println("我是员工A,我擅长数据加密,我开始工作了!");
    }
}

员工B,擅长编写SQL语句

/**
 * @description: 员工B
 *  擅长SQL语句
 * @author: Jh Lee
 * @create: 2019-03-15 23:18
 **/
public class EmployeeB implements Employee {
    @Override
    public void doWork() {
        System.out.println("我是员工B,我擅长编写SQL语句,我开始工作了!");
    }
}

员工C,擅长JVM性能优化

/**
 * @description: 员工C
 * 擅长性能优化
 * @author: Jh Lee
 * @create: 2019-03-15 23:18
 **/
public class EmployeeC  implements Employee{
    @Override
    public void doWork() {
        System.out.println("我是员工C,我擅长JVM性能优化,我开始工作了!");
    }
}

接着我们新建一个项目经理Leader类,里面当然就有一个进行任务分发的方法。方法参数,就是我们老板具体想让我们项目经理做些什么,然后里面有一个容器,用于记录我们每一个员工的技术特点,方便我们通过我们老板的需求委派给不同的员工去工作。这里的容器我们还可以在数据库中进行存储,也可以直接声明在我们内存中。

/**
 * @description: 委派模式项目经理
 * @author: Jh Lee
 * @create: 2019-03-15 23:12
 **/
public class Leader {

    //这里的项目经理预先知道了团队里面每个人的特长,特点,我们放在一个map容器里面,通过leader的构造方法存入,当然我们也可以通过数据库表来进行存放
    private Map<String,Employee> register = new HashMap<>();

    public Leader() {
        register.put("数据加密",new EmployeeA());
        register.put("SQL编写",new EmployeeB());
        register.put("JVM性能优化",new EmployeeC());
    }

    //项目经理干活方法,通过对每一个员工的了解,让对应的员工去做对应是,通过命令委派给员工
    public void doWork(String command){
        this.register.get(command).doWork();
    }
}

我们新建一个老板Boss类,里面有一个向项目经理Leader发送命令的方法。

/**
 * @description: 委派模式Boss类
 * @author: Jh Lee
 * @create: 2019-03-15 23:12
 **/
public class Boss {

    //对项目经理发送命令,让项目经理干活
    public void sendCommand(String command){
        new Leader().doWork(command);
    }
}

好,到这里我们整套委派的模式已经写完了,我们来测试一下。

/**
 * @description: 委派模式测试类
 * @author: Jh Lee
 * @create: 2019-03-15 23:30
 **/
public class DelegateTest {

    public static void main(String[] args) {
        //实例化一个老板
        Boss boss = new Boss();
        //让这个老板发送一条命令,老板想要对数据加密
        boss.sendCommand("数据加密");
    }
}

测试结果:
在这里插入图片描述
可以看到,我们相应的员工已经被委派到对老板的需求开始工作了,这就是委派模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值