一、引导
代理设计在就是指由一个代理主题来操作真实主题,真是主题执行具体的业务操作,而代理主题负责其他相关业务的处理,就好像在生活中使用的代理上网一样,客户通过网络代理连接网络,有代理服务器完成用户权限和访问权限等上网相关的操作。不管代理操作还是真实操作,其共同的目的就上网,所以用户关心的是如何上网,至于具体是如何操作的用户并不关心。例如:只需要定义一个上网的接口,代理主题和真实主题都同时实现此接口,然后再由代理主题操作真实主题即可。
二、示例代码:
package com.wbf.proxy;
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 netWork) {//设置代理的真实操作
this.netWork = netWork;
}
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();
}
}
三、说明:
从以上代码中就可以看出,真实主题完成的只是上网的最基本的功能,而代理主题要做比真实主题更多的业务相关的操作。