委派模式
委派模式定义
委派模式的基本作用是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态带来的全权代理,但是代理模式注重过程,而委派模式注重结果。不属于23中设计模式之一,属于行为型模式。
现实生活中的委派事例
老板(Boss)给项目经理(Leader)下达任务,项目经理会根据实际情况给每个员工派发任务,待员工把任务完成后,再由项目经理向老板汇报结果。接下来用代码模拟这个业务场景
代码
创建Boss类下达命令
package com.wb.pattern.delegate.simple;
/**
* @author wb
* @date 上午11:21:42
*
*/
public class Boss {
/**
* 老板给经理下达命令
* @param command
* @param leader
*/
public void command(String command,Leader leader) {
leader.doing(command);
}
}
创建项目经理Leader类分配任务
package com.wb.pattern.delegate.simple;
import java.util.HashMap;
import java.util.Map;
/**
* @author wb
* @date 上午11:22:18
*
*/
public class Leader implements IEmployee{
//预先知道每个员工的特征,员工A擅长加密,B员工擅长登录
private Map<String, IEmployee> targets = new HashMap<String, IEmployee>();
public Leader() {
targets.put("加密", new EmployeeA());
targets.put("登录", new EmployeeB());
}
//项目经理自己不干活,找员工
@Override
public void doing(String command) {
targets.get(command).doing(command);
}
}
员工接口,里面有根据任务工作的方法
package com.wb.pattern.delegate.simple;
/**
* @author wb
* @date 上午11:18:39
*
*/
public interface IEmployee {
// 员工根据任务做工作
public void doing(String command);
}
创建A员工,B员工
package com.wb.pattern.delegate.simple;
/**
* @author wb
* @date 上午11:19:29
*
*/
public class EmployeeA implements IEmployee{
@Override
public void doing(String command) {
System.out.println("我是员工A,我现在开始工作,做" + command + "工作.");
}
}
package com.wb.pattern.delegate.simple;
/**
* @author wb
* @date 上午11:19:29
*
*/
public class EmployeeB implements IEmployee{
@Override
public void doing(String command) {
System.out.println("我是员工B,我现在开始工作,做" + command + "工作.");
}
}
测试类
package com.wb.pattern.delegate.simple;
public class DelegateTest {
public static void main(String[] args) {
new Boss().command("加密", new Leader());
new Boss().command("登录", new Leader());
}
}
测试结果
上面代码还原了项目经理分配任务的业务场景