欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-23 23:36:04
定义: 为其他对象提供一种代理以控制对这个对象的访问。 结构:(书中图,侵删) 一个定义公共方法的接口 一个真实实体 一个含有真实实体引用的代理类 我思考了一下,咱们的*就是一种代理 如上图,假如要访问油管,我们需要先将请求发给代理服务器,由代理服务器帮我们访问目标网站。 但是一般这种目标网站 ......

定义:

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

结构:(书中图,侵删)

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

一个定义公共方法的接口
一个真实实体
一个含有真实实体引用的代理类
 
我思考了一下,咱们的*就是一种代理
设计模式 | 代理模式(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

总结:

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