一.定义
委派对象并不知道如何处理请求,它会把任务交给要委托的对象去完成。
属于行为型模式
二.通用写法
举一个boss给员工下发任务的例子,日常生活中boss通常不会给员工直接下发任务,而是由各个部门的领导下发,这个时候领导就可以充当为委派对象。
新建一个EmployeeA类
public class EmployeeA {
public void doTask() {
System.out.println("员工A执行任务");
}
}
新建一个EmployeeB类
public class EmployeeB {
public void doTask() {
System.out.println("员工B执行任务");
}
}
新建一个委托类
public class TaskDelegate {
public void execute(String task) {
if (".".equals(task)) {
new EmployeeA().doTask();
} else {
new EmployeeB().doTask();
}
}
}
新建一个Boss类,持有委托类的引用
public class Boss {
private TaskDelegate taskDelegate;
public Boss(TaskDelegate taskDelegate) {
this.taskDelegate = taskDelegate;
}
void doTask(String task) {
this.taskDelegate.execute(task);
}
}
测试类:
public class Test {
public static void main(String[] args) {
Boss boss = new Boss(new TaskDelegate());
boss.doTask(".");
}
}
输出结果:
三.委派模式在源码中的应用
双亲委派模型
四.委派模式的优缺点
优点:能够对任务进行细化,方便管理
缺点:当任务较为复杂时,容易造成紊乱