代理模式基本概念:
1.代理模式的作用:为其他对象提供一种以控制对方的访问
在某种情况下,一个客户不想或者不能直接引用另一个对象,代理可以在客户端和目标对象之间起到中介的作用
代理的角色:
(1)抽象角色:声明真实对象和代理对象的共同接口(比如租房,抽象角色就是把租房这件事给抽象成一个接口)
(2)代理角色:代理对象内部含有真实对象的引用,从而可以操纵真实的对象,同时代理对象提供与真实对象相同的接口,以便在任何时候都能代替真实对象。代理对象可以在执行真实对象操作时附加其他的操作(比如,租房时,中介收中介费),相对于真实对象进行封装。
(3)真实角色:代理对象所代理的真实角色,是我们要引用的对象
2.JDK动态代理
JDK动态代理可以为所有接口的实现类提供代理
动态代理开发步骤:
(1)创建一个实现接口InvocationHandler的类,它必须实现invoke方法
(2)创建被代理对象的类和接口
(3)通过Proxy.newProxyInstance()来创建代理类
(4)通过代理来调用被代理对象的方法
静态代理demo:模拟通过代理租房
1 package proxydemo; 2 3 public interface HireHouse { 4 5 public void hire(); 6 }