本文共 1421 字,大约阅读时间需要 4 分钟。
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。
ProxyPatternDemo,我们的演示类使用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行显示。步骤 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/