发布时间:2023-07-25 13:30
代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网上连接、存储器中的大对象、文件或其它昂贵或无法复制的资源。例如:在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。
那么如何解决以上提到的缺点呢?答案是可以使用动态代理方式
代理模式的结构比较简单,主要是通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问,下面来分析其基本结构和实现方法。
代理模式的主要角色如下。
根据代理的创建时期,代理模式分为静态代理和动态代理。
代理模式的实现代码如下:
package proxy;
public class ProxyTest {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.Request();
}
}
//抽象主题
interface Subject {
void Request();
}
//真实主题
class RealSubject implements Subject {
public void Request() {
System.out.println("访问真实主题方法...");
}
}
//代理
class Proxy implements Subject {
private RealSubject realSubject;
public void Request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
preRequest();
realSubject.Request();
postRequest();
}
public void preRequest() {
System.out.println("访问真实主题之前的预处理。");
}
public void postRequest() {
System.out.println("访问真实主题之后的后续处理。");
}
}
module ‘tensorflow.python.pywrap_tensorflow‘ has no attribute ‘NewCheckpointReader‘的解决方法
ReID行人重识别(训练+检测,附代码),可做图像检索,陌生人检索等项目
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
ebook下载 | 灵雀云发布《 企业高管IT战略指南——为何选择容器与Kubernetes》
后台管理系统简单版 Vue+Vuex+Vue-router+Axios+Element-ui
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO