📅  最后修改于: 2023-12-03 14:56:55.708000             🧑  作者: Mango
统一代表是一种设计模式,它允许一个对象作为另一个对象的代表,以控制对该对象的访问。在这种模式中,代表对象充当客户端和实际对象之间的代理,以控制对实际对象的访问和操作。
统一代表模式的主要优点是:
以下是一个简单的示例代码:
interface Image {
void display();
}
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);
}
}
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();
}
}
public class ProxyPatternDemo {
public static void main(String[] args) {
Image image = new ProxyImage("test.jpg");
// 图片从磁盘加载
image.display();
// 图片不需要从磁盘加载
image.display();
}
}
在上面的示例中,RealImage
代表了实际的图片对象,并负责加载和显示图片。ProxyImage
代表了图片对象的代表,并提供了对实际图片对象的访问和操作。在第一次调用display()
方法时,ProxyImage
会创建一个新的RealImage
对象并调用其loadFromDisk()
方法,以从磁盘加载图片。在后续调用display()
方法时,ProxyImage
会直接调用已经创建的RealImage
对象的display()
方法,以显示图片。
统一代表模式提供了一种简单而有效的方法,以控制对对象的访问和操作,并提高了应用程序的性能和可维护性。它主要用于以下情况: