委派模式
1.类似于中介的功能(委派机制);
2.持有被we委托人的引用
3.不关心过程,只关心结果
要和代理模式区分开
一般来说,两个角色,受托人,委托人(社会上是平等关系)
如:公司里面:项目经理,普通员工(法律上平等的,工作的关系,各自的职责会不一样)
干活是我的,功劳是你的(最重要的特点,关系的是执行的结果)
项目经理(委托人):主要职责是安排任务
普通员工(受托人):执行任务
主要mu目的隐藏实现的逻辑
IOC容器中,有一个Register的东西(为了告诉我们的容器,在这个类被初始化的过程中,需要做很多不同的逻辑处理,需要实现多个任务执行者,分别实现各自的功能)
定义一个执行的接口
package delegate;
public interface IExector {
//普通员工执行任务
//在公司中,员工给执行任务
//规定在一周之内必须完成
void doing();
}
实现操作的方法(受托人)
package com.gupaoedu.vip.delegate;
//想法,用代码来描述这种想法?
//所以,写得比较简单
public class ExectorA implements IExector {
@Override
public void doing() {
System.out.println("员工A开始执行任务");
}
}
package com.gupaoedu.vip.delegate;
public class ExectorB implements IExector{
@Override
public void doing() {
System.out.println("员工B开始执行任务");
}
}
委托人
package com.gupaoedu.vip.delegate;
public class Dispatcher implements IExector{
IExector exector;
Dispatcher(IExector exector){
this.exector = exector;
}
//项目经理,虽然也有执行方法
//但是他的工作职责是不一样的
public void doing() {
this.exector.doing();
}
}
测试
package com.gupaoedu.vip.delegate;
public class DispatcherTest {
public static void main(String[] args) {
Dispatcher dispatcher = new Dispatcher(new ExectorA());
//看上去好像是我们的项目经理在干活
//但实际干活的人是普通员工
//这就是典型,干活是我的,功劳是你的
dispatcher.doing();
}
}