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