代理模式也是Java开发中使用较多的一种设计模式,是指利用一个代理来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。
代理模式类似于现实生活中使用代理上网,真实的上网服务器进行具体的网络操作,而代理服务器完成用户权限和访问限制等与上网操作相关的业务。
interface NetWork{
public void browse();
}
class Real implements NetWork{ //真实的上网操作
public void browse(){
System.out.println("上网浏览信息!");
}
}
class Proxy implements NetWork{ //代理上网
private NetWork network;
public Proxy(NetWork net){
network=net;
}
public void check(){ //相关业务
System.out.println("检查用户是否合法");
}
public void browse(){ //同时调用多个相关操作
this.check();
this.network.browse(); //调用真实上网操作
}
}
public class ProxyDemo{
public static void main(String args[]){
NetWork net=null;
net=new Proxy(new Real()); //实例化代理,传入代理的真实操作
net.browse(); //客户仅关心上网浏览一个功能
}
}
运行结果:
以上程序中真实主题完成的只是上网的最基本功能,而代理主题要做比真实主题更多的业务相关的操作。