设计模式 | 代理模式(proxy)

定义:

为其他对象提供一种代理以控制对这个对象的访问。

结构:(书中图,侵删)

一个定义公共方法的接口
一个真实实体
一个含有真实实体引用的代理类

实例:

我思考了一下,咱们的科学上网就是一种代理
如上图,假如要访问油管,我们需要先将请求发给代理服务器,由代理服务器帮我们访问目标网站。
但是一般这种目标网站是不知道真正访问的人——也就是我的存在的。
 
用代码来表示:
公共接口,都有访问的方法
package designpattern.proxy;

public interface Visit {
    void visit(String address);
}

真实类(自己的电脑):

package designpattern.proxy;

public class PC implements Visit {

    @Override
    public void visit(String address) {
        System.out.println("访问" + address);
    }

}

代理类(代理服务器):

package designpattern.proxy;

public class Proxy implements Visit {
    PC pc;

    public Proxy(PC pc) {
        this.pc = pc;
    }

    @Override
    public void visit(String address) {
        pc.visit(address);
    }

}

客户端:

package designpattern.proxy;

public class Client {
    public static void main(String[] args) {
        Proxy proxy = new Proxy(new PC());
        proxy.visit("youtube.com");
    }
}
结果输出:
访问youtube.com

总结:

这个设计模式相对来说比较简单,就相当于授权给别人,让别人帮我干事;
有点像古代尚方宝剑的感觉,见到此剑,如朕亲临。(一不小心中二了起来)
生活中也很常见,所以理解起来比较容易。

 

posted @ 2019-04-09 18:38  莫愆  阅读(213)  评论(0编辑  收藏  举报