代理模式心得
1 简述
代理模式,通俗的来讲代理模式就是我们生活中常见的中介,为一个对象在不改变原有需求的情况下增强其功能
2 示例
2.1 需求说明
比如我们需要找房子,先生成租房核心操作接口类
/**
* 抽象租房的核心操作接口类
*/
interface RentalHouse {
/**
* 提供租房需求
*/
public void rentalHouse();
}
实现该接口
class RentalHouseImpl implements RentalHouse {
public void rentalHouse(){
System.out.println("我租房");
}
}
主程序
/**
* 主程序
*/
public class TestRun {
public static void main(String args[]){
RentalHouse rh = new RentalHouseImpl();
rh.rentalHouse();
}
}
********执行结果*******
我租房
2.2 问题发现
如果按照这个方式的话, 也仅仅是你个人在找房子而已,能力不强
3 改造
比如我们需要找房子,我们自己找能力有限, 也就催生出一类公司, 房屋中介,他代为找房, 公司能力更强更广, 能更好更快的为你找合适的房子,你们共同的核心需求就是找房,同时中介在找房的基础上提供了更多功能,也就是代理主题实现
/**
* 租房中介
*/
class RentalHouseProxy implements RentalHouse {
private RentalHouse rentalHouse;
public RentalHouseProxy(final RentalHouse rentalHouse) {
this.rentalHouse = rentalHouse;
}
private void ready(){
System.out.println("租房前准备,查找公司数据库资源");
}
@Override
public void rentalHouse() {
ready();
rentalHouse.rentalHouse();
complete();
}
private void complete(){
System.out.println("租房后卫生打扫,家具修理");
}
}
主程序
/**
* 主程序
*/
public class TestRun {
public static void main(String args[]){
// 提供真实需求
RentalHouse rh = new RentalHouseImpl();
// 通过中介找房,将需求告诉中介
RentalHouseProxy proxy = new RentalHouseProxy(rh);
//中介帮你租房
proxy.rentalHouse();
}
}
********执行结果*******
租房前准备,查找公司数据库资源
我租房
租房后卫生打扫,家具修理
4 结果总结
看以上的代码就能得出, 中介不仅能提供找房子功能, 还能做到提前在自己的数据库中查找, 提高找房速度效率, 并且在租房后提供卫生的打扫工作, 家具修理, 功能更强, 比你自己找房还要轻松, 服务更好.
网友评论