public class NetworkTest {
public static void main(String[] args) {
Server server = new Server();
ProxySever proxySever = new ProxySever(server);
proxySever.browse();
}
}
interface Network {
public void browse();// 浏览功能
}
class Server implements Network {
@Override
public void browse() {
System.out.println("真实的服务器访问网络");
}
}
class ProxySever implements Network {
private Network work;
public ProxySever(Network work) {
this.work = work;
}
public void check() {
System.out.println("联网之前的检查工作");
}
@Override
public void browse() {
check();
work.browse();
}
}
结果如下:
让代理服务器ProxySever去调用browse()方法,事实上包含了真实的服务器Sever去调用browse()方法
实质:用代理类创对象,用对象调方法。事实上创对象时由于代理类构造器声明的局部变量是接口类型,故由于Server并没有显式的去调用browse,而是通过多态性可以用被代理类Server来当做参数,间接的使用Server调用browse
代理类 a=new 代理类(new 被代理类)
代理类里需要有构造器:其中参数为接口,此时可以由多态性将被代理类来替换这个接口