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