委派模式特点
1、两个参与角色:委托人和被委托人
这个很好理解
2、委托人和被委托人在权力上完全平等
就是实现同一个接口
3、委托人持有被委托人的引用
这个也很好理解,因为需要用到被委托人的方法
4、不关心过程,只关心结果
这个就是说在用到被委托人的具体方法前后不增加逻辑,完全由被委托人去干
一句话概括
干活是你的(普通员),功劳是我的(部门leader)
具体代码
通用程序员接口
/**
* @author zhangyu
* @description 程序员
* @date 2018/8/6 上午10:02
*/
public interface Programmer {
void coding();
}
两种角色
/**
* @author zhangyu
* @description 小明
* @date 2018/8/6 上午10:23
*/
public class XiaoMing implements Programmer{
@Override
public void coding() {
System.out.println("小明写代码");
}
}
/**
* @author zhangyu
* @description 小红
* @date 2018/8/6 上午10:25
*/
public class XiaoHong implements Programmer{
@Override
public void coding() {
System.out.println("小红写代码");
}
}
/**
* @author zhangyu
* @description 部门leader
* @date 2018/8/6 上午10:26
*/
@Data
public class Leader implements Programmer{
//持有被委托人的引用
Programmer programmer;
//想让小明干活就小明干,想让小红干就小红干
public Leader(Programmer programmer) {
this.programmer = programmer;
}
@Override
public void coding() {
//自己不干,让别人干
programmer.coding();
}
}
测试
/**
* @author zhangyu
* @description
* @date 2018/8/6 上午10:37
*/
public class DelegateTest {
public static void main(String[] args) {
//任务下发的leader
Leader leader = new Leader(new XiaoMing());
leader.coding();
}
}
执行main方法后console里打印小明写代码。