委派模式是什么
有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。
组长要取快递,组长委派组员去取快递。
委派模式与代理模式的区别
委派模式只关心结果
代理模式只关心过程
委派模式源码
委派者与被委派者都具有的能力
package delegate;
/**
* 委托人与被委托人共同拥有的能力
*/
public interface IDelivery {
/**
* 取快递的方法
*/
void getExpressDelivery();
}
被委托人实现类
组员A
package delegate;
/**
* @author : freedom
* @Description : 组员A具有取快递的能力
* @Creation Date: 2019-11-27 7:50 上午
*/
public class EmployeeA implements IDelivery {
@Override
public void getExpressDelivery() {
System.out.printf("组员A去南门取快递");
}
}
组员B
package delegate;
/**
* @author : freedom
* @Description : 组员B具有取快递的能力
* @Creation Date: 2019-11-27 7:51 上午
*/
public class EmployeeB implements IDelivery {
@Override
public void getExpressDelivery() {
System.out.printf("组员B去北门取快递");
}
}
委派人实现类
vpackage delegate;
/**
* @author : freedom
* @Description : 组长 想取快递
* @Creation Date: 2019-11-27 7:49 上午
*/
public class Leader implements IDelivery {
//声明委托人
private IDelivery iDelivery;
/**
* 初始化委托人
* @param iDelivery
*/
Leader(IDelivery iDelivery) {
this.iDelivery = iDelivery;
}
@Override
public void getExpressDelivery() {
//按排委托人去取快递
this.iDelivery.getExpressDelivery();
}
}
委派模式测试类
package delegate;
/**
* @author : freedom
* @Description : TODO
* @Creation Date: 2019-11-27 7:56 上午
*/
public class DelegateTest {
public static void main(String[] args) {
Leader leader = new Leader(new EmployeeA());
leader.getExpressDelivery();
}
}
测试结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QcYoFo59-1574812961178)(evernotecid://AAA42DFC-EC45-4768-B516-25846DA75603/appyinxiangcom/12441645/ENResource/p1891)]