一、背景
- 一种组合方法。强调组合优于继承,通过对象的协作来实现功能
- 在委托方式下,两个对象处理一个请求,接受请求的对象将操作委托给它的代理者。
二、原理
组成角色
- 委托者: 接受请求,派发任务
- 委托接口: 定义实现方法
- 具体委托对象:实际执行任务
我突然发现回调和委托逻辑很像。 回调是委托模式的一种应用场景。
三、和其他模式的区别
委派和代理及装饰者模式不同 委派仅仅是将方法的执行工作移交给另一个对象
代理可能在此做额外的处理 装饰者会在方法执行前后做增强。
四、例子
public interface TaskHandler {
void handleTask();
}
public class Delegator {
private TaskHandler taskHandler;
public void setTaskHandler(TaskHandler taskHandler) {
this.taskHandler = taskHandler;
}
public void executeTask() {
if (taskHandler != null) {
taskHandler.handleTask();
}
}
}
public class Delegator {
private TaskHandler taskHandler;
public void setTaskHandler(TaskHandler taskHandler) {
this.taskHandler = taskHandler;
}
public void executeTask() {
if (taskHandler != null) {
taskHandler.handleTask();
}
}
}
public class DelegateTest {
public static void main(String[] args) {
Delegator delegator = new Delegator();
delegator.setTaskHandler(new ConcreteHandler());
delegator.executeTask();
}
}