Java代理设计模式实例

时间:2020-02-23 14:37:13  来源:igfitidea点击:

本文描述了java中的代理设计模式。

代理设计模式是四人帮设计模式中的一种基本方案设计。辅助结构设计管理如何确认对象之间的连接以改进计划。

代理设计模式是如何工作的?

代理模式为另一个对象提供代理项或者占位符来控制对它的访问。在计算机程序设计中,代理设计是一种产品配置设计。代理,在其最广泛的结构中,是一个类,作为不同事物的接口。

代理可以连接到任何东西:系统关联、内存中的大对象、记录或者其他一些昂贵或者难以复制的资产。简单地说,代理是一个包装器或者操作符对象,客户调用它来在后台获取真正的服务对象。利用中介基本上可以发送到真正的物品或者可以给出另外的理由。在代理中,可以给另外的用户,例如,当真正的项目上的活动是资产严重时保留,或者在调用真正对象上的任务之前检查准备工作。

对于客户来说,使用代理对象就像使用真正的项目,因为两者都实现了相似的接口。

代理设计模式在现实场景中的实现

我们可以

Image

接口和实体类执行

Image

接口。

ProxyImage

是一个代理类,用于减少

RealImage

对象堆叠。

Java实例的代理模式图

Java代理设计模式实例

创建接口

图像.java

public interface Image {
 void display();
}

创建实现相同接口的具体类。

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);
 }
}

java.image代理

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();
 }
}

使用

ProxyImage

为了得到

RealImage

必要时上课。

代理模式演示.java

public class ProxyPatternDemo {

 public static void main(String[] args) {
    Image image = new ProxyImage("test_10mb.jpg");

    //image will be loaded from disk
    image.display(); 
    System.out.println();

    //image will not be loaded from disk
    image.display(); 	
 }
}

验证输出。

Loading test_10mb.jpg
Displaying test_10mb.jpg

Displaying test_10mb.jpg