目录
什么是代理模式?
其实代理模式我们很早就在生活中接触过。为了实现某个目的而让中间人去做,这其实就是代理模式。厂家为了销售产品,招省代理,省代理招市级代理,市代理又去招县区代理。这样一层层代理最后到了区域销售点来销售给顾客,厂家的产品,由销售点去销售,这就是代理。
静态代理
先上代码如下:
public class MainTest
{
public static void main(String[] args) {
Server server=new Server();
ProxyServer proxyServer=new ProxyServer(server);
proxyServer.browse(); //这里能看到,真实服务器并没有调用browse(),而是代理服务器去调用,这样真实服务器的操作延迟到了代理中实现。
}
}
interface NetWork //定义接口,网络浏览
{
void browse();
}
class Server implements NetWork //真实服务器浏览
{
@Override
public void browse() {
System.out.println("真实服务器浏览!");
}
}
class ProxyServer implements NetWork //代理服务器的浏览
{
private NetWork work;
public ProxyServer(NetWork work)
{
this.work=work;
}
public void check()
{
System.out.println("联网之前的检查!");
}
@Override
public void browse() {
check();
work.browse();
}
}
以上就是静态代理,为了一种场景编写一套代码,换了场景基本就无法应用。当然我们还有动态代理,后面会再细说。
动态代理
代理适用场景
- 安全代理,屏蔽对真实角色的直接访问
- 远程代理,通过代理类处理远程方法调用
- 延迟加载,先加载轻量级的代理对象,真正需要再加载真实对象