代理模式1,静态代理
为其他对象提供一种代理可以控制这个对象的访问。--设计模式 P137
客户端->代理->目标对象
某星球的AB两个国家,网络是通的,但是某种原因,A无法访问B的某些网站,好事者搞了代理服务器,
A国网名(客户端)-->访问代理服务器,代理服务器去转发这些请求-->目标对象
浅显的理解就是这样了,万丈高楼平地起,当然,代理的使用方式有很多.
代理模式的四个角色
1).主题接口: 定义代理类和真实主题的公共对外方法,也是代理类真实主题的方法
2).真实主题: 真是实现业务逻辑的类
3).代理类: 用代理和封装真实主题
4).客户端: 客户端,使用代理类和主题完成工作
1.Internet是主题接口,暂且理解成B国家的互联网,有个部分行为是B国家才有的比如这个goGoSearch()
public interface Internet { void goGoSearch(); }
2.这是goGoSearch的具体实现,目前我们A国无法使用这个,只能通过代理来实现这个行为
public class VpnInternet implements Internet { @Override public void goGoSearch() { System.out.println("you can use goGo..."); } }
3.我们去搞了一个代理Server,他可以去实现goGoSearch的行为,
public class Proxy implements Internet { private VpnInternet vpnInternet; public Proxy(){ System.out.println("connecting server..."); System.out.println("The connection is successful..."); } @Override public void goGoSearch() { if(vpnInternet==null){ vpnInternet=new VpnInternet(); } vpnInternet.googleSearch(); } }
4.客户端通过代理的注册,就可以使用goGoSearch了,
public class Client { public static void main(String[] args) { Internet internet=new Proxy(); internet.goGoSearch(); } }
当然,这个只是我根据 “科学上网” YY出来的代理模式,
代理模式分为静态代理和动态代理,用途也很多~