ToB企服应用市场:ToB评测及商务社交产业平台

标题: 代理模式 [打印本页]

作者: 美食家大橙子    时间: 2024-8-19 08:13
标题: 代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能,这种范例的筹划模式属于结构型模式。
代理模式通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介,负责将客户端的请求转发给目标对象,同时可以在转发请求前后进行额外的处理。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
介绍

意图

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

利用场景

实现方式

关键代码

应用实例

优点

缺点

利用发起

注意事项

结构

主要涉及到以下几个焦点角色:
实现

我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,淘汰 RealImage 对象加载的内存占用。
ProxyPatternDemo 类利用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行体现。
步骤 1

创建一个接口。
Image.java

public interface Image { void display(); }步骤 2

创建实现接口的实体类。
RealImage.java

public class RealImage implements Image { private String fileName; public RealImage(String fileName){ this.fileName = fileName; loadFromDisk(fileName); } @Override public void display() { System.out.println("Displaying " + fileName); } private void loadFromDisk(String fileName){ System.out.println("Loading " + fileName); } }ProxyImage.java

public class ProxyImage implements Image{ private RealImage realImage; private String fileName; public ProxyImage(String fileName){ this.fileName = fileName; } @Override public void display() { if(realImage == null){ realImage = new RealImage(fileName); } realImage.display(); } }步骤 3

当被请求时,利用 ProxyImage 来获取 RealImage 类的对象。
ProxyPatternDemo.java

public class ProxyPatternDemo { public static void main(String[] args) { Image image = new ProxyImage("test_10mb.jpg"); // 图像将从磁盘加载 image.display(); System.out.println(""); // 图像不需要从磁盘加载 image.display(); } }步骤 4

执行步伐,输出结果:
  1. Loading test_10mb.jpg
  2. Displaying test_10mb.jpg
  3. Displaying test_10mb.jpg
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4