代理模式是java常用的设计模式。
代理的定义:为其他对象提供一种代理以控制对这个对象的访问。
简单点说就是代理对象与实际对象都实现了相同的接口,我们可以通过代理对象来间接的访问实际对象,也因为这种间接性,我们可以为代理类添加更多的方法。
二.静态代理 (一)静态代理静态代理:代理类与被代理类之间的关系在编译时期就已经确定下来
(二)静态代理的简单实现根据上面的图写一个静态代理的实例:假如小明想要买房,但是他不知道哪里的房比较好,所以要通过房产中介来找房子。
1.首先我们创建一个接口来表示买房的具体实现。
interface PayFor{
void submit(int money);
void order();
}
2.委托人要实现接口,也就是小明要去实现这个接口
class XiaoMing implements PayFor{
@Override
public void submit(int money) {
System.out.println(String.format("预计花%d元买房",money));
}
@Override
public void order() {
System.out.println(String.format("找到喜欢的房子,支付中介%d元",1100));
}
}
3.代理人实现接口,完成委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。
也就是房产中介要实现接口,你也可以向其中加入其他额外的方法,这里就不试了。
class Intermediary implements PayFor{
PayFor payFor;
public Intermediary (PayFor payFor){
this.payFor = payFor;
}
@Override
public void submit(int money) {
payFor.submit(money);
}
@Override
public void order() {
payFor.order();
}
}
4.通过中介公司产生代理对象
class IntermediaryFactory{
public static PayFor getIntermediary(){
return new Intermediary(new XiaoMing());
}
}
5.在客户端中实现
public class Demo2{
public static void main(String[] args) {
IntermediaryFactory.getIntermediary().submit(1500000);
IntermediaryFactory.getIntermediary().order();
}
}
代理模式最主要的就是有一个公共接口(PayFor),一个具体的类(XiaoMing),一个代理类(Intermediary),代理类持有具体类的实例,代为执行具体类实例方法。
二.动态代理待完善......



