代理模式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出来的代理模式,

代理模式分为静态代理和动态代理,用途也很多~

 

posted on 2018-04-09 14:02  马利克  阅读(117)  评论(0编辑  收藏  举报

导航