1.定义
给某一对象提供一个代理对象,并由代理对象控制对原对象的引用。可以通过代理对象在客户端和目标对象之间起到中介作用
2.代理模式里的角色
抽象对象角色:目标对象和代理对象的共同的接口
目标对象:
代理对象:代理对象中有目标对象的引用
4.静态代理
接口
public interface Server{
public String getMessage();
}
目标对象
public class SinaServer implements Server{
@Override
public String getMessage(){
retrun "success";
}
}
代理对象
public class NgnixProxy implements Server{
private Server Server;
public NgnixProxy(Server server){
this.server=server;
}
@Override
public String getMessage(){
return "success";
}
}
测试:
Server SinaServer=new SinaServer();
Server ngnixProxy=new NgnixProxy(sinaServer); //代理对象控制原对象的引用
5.动态代理:
利用java反射技术,动态创建代理对象。
jdk动态代理:需要定义接口和实现接口
cglib代理,对目标类生成一个子类,覆盖其中方法实现增强,采用的是继承的方式