代理模式
代理从字面意思理解就是委托办理事情,比如买房子找中介,但具体房子还是属于原房主的不是中介的。
例子
public interface ISale {
public int sale(House house); //卖房子
}
房屋中介
public class HouseProxy implements ISale {
public int sale(House house) {
return 0;
}
}
实际卖家
public class HouseOwner implement ISale {
public int sale(House house) {
//处理逻辑,比如卖房子 需要到房屋管理所去办手续等,需要操作DB
return 0;
}
}
我们合起来
public class HouseProxy implements ISale {
public int sale(House house) {
//我们还可以做日志监控,典型的Spring中用动态代理来处理非业务问题
HouseOwner owner = new HouseOwner();
return owner.sale(house);
}
}
ISale saleMan = new HouseProxy();
House h = new House();
h.price = 344.0;
h.owner = "Mr.Wang";
h.id = "A3343";
saleMan.sale(h);
代理优点
1.API与实现分离,一种解耦
2.代理类中还可以做其它事情,比如日志处理,典型的是Spring框架中AOP动态代理的应用