博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代理模式
阅读量:6371 次
发布时间:2019-06-23

本文共 1421 字,大约阅读时间需要 4 分钟。

定义

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

实现

我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。

ProxyPatternDemo,我们的演示类使用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行显示。

img_e6e6ed94af5eea87312a0410d31a33a9.png
image.png
步骤 1创建一个接口。Image.javapublic interface Image {   void display();}步骤 2创建实现接口的实体类。RealImage.javapublic 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.javapublic 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.javapublic class ProxyPatternDemo {       public static void main(String[] args) {      Image image = new ProxyImage("test_10mb.jpg");      //图像将从磁盘加载      image.display();       System.out.println("");      //图像将无法从磁盘加载      image.display();     }}步骤 4验证输出。Loading test_10mb.jpgDisplaying test_10mb.jpgDisplaying test_10mb.jpg

转载地址:http://zayqa.baihongyu.com/

你可能感兴趣的文章
Android打地鼠游戏的修改和优化
查看>>
Java异常
查看>>
map、reduce、filter、for...of、for...in等总结
查看>>
html2canvas-实现页面截图
查看>>
入门 | 从文本处理到自动驾驶:机器学习最常用的50大免费数据集
查看>>
笔记-从源码角度分析alloc与init的底层
查看>>
消除GitHub上的历史记录
查看>>
自学 JAVA 的几点建议
查看>>
第十三天-企业应用架构模式-对象-关系元数据映射模式
查看>>
k8s与HPA--通过 Prometheus adaptor 来自定义监控指标
查看>>
虎牙直播在微服务改造方面的实践和总结
查看>>
怎样将优酷网站下载的视频KUX转MP4格式
查看>>
MongoDB 分组统计
查看>>
二进制状态码
查看>>
Vue 中 CSS 动画原理
查看>>
关于 Promise 的 9 个提示
查看>>
算法复习
查看>>
安卓中高级开发面试知识点之——缓存
查看>>
Java的初始化顺序
查看>>
js 判断回文字符串
查看>>