Java代理模式

/ / Java代理模式

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,通俗的来讲代理模式就是无涯教程生活中常见的中介,属于结构模式。

代理模式实例

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

演示类 ProxyPatternDemo 将使用 ProxyImage 获取 Image 对象,以根据需要加载和显示该对象。

Proxy Pattern UML Diagram

第1步 -  创建一个Image接口。

Image.java

public interface Image {
   void display();
}

第2步 -  创建实现Image接口的具体类。

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步 -  验证输出。

Loading test_10mb.jpg
Displaying test_10mb.jpg

Displaying test_10mb.jpg

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

Rust并发编程实战课 -〔晁岳攀(鸟窝)〕

分布式数据库从入门到实战 -〔彭旭〕

给程序员的写作课 -〔高磊〕

互联网人的数字化企业生存指南 -〔沈欣〕

AI绘画核心技术与实战 -〔南柯〕

物联网开发实战 -〔郭朝斌〕

职场求生攻略 -〔臧萌〕

从0打造音视频直播系统 -〔李超〕

从0开始学微服务 -〔胡忠想〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者