? ? ? ? 代理模式(Proxy Pattern)是属于结构型的设计模式,它为其他对象提供一个代理通过它间接返回目标对象。代理模式通过引入一个中间层(代理类),在客户端和目标对象之间进行解耦。
// 抽象主题
public interface Image {
void display();
}
// 真实主题
public class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadFromDisk(); // 加载图像文件到内存
}
private void loadFromDisk() {
// 加载实际图像数据的代码...
System.out.println("Loading image from disk: " + filename);
}
@Override
public void display() {
System.out.println("Displaying image: " + filename);
}
}
// 代理
public class ProxyImage implements Image {
private String filename;
private RealImage realImage;
public ProxyImage(String filename) {
this.filename = filename;
}
@Override
public void display() {
if (realImage == null) {
realImage = new RealImage(filename);
}
realImage.display();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Image proxyImage = new ProxyImage("large.jpg");
proxyImage.display(); // 第一次会加载图像
proxyImage.display(); // 第二次直接显示,不再重新加载
}
}
说明:在上面代码中的RealImage
?类是真实主题,而?ProxyImage
?类作为代理,当第一次调用?display()
?方法时,它才会真正加载图像文件,后续调用则直接显示已加载的图像,从而优化了性能并展示了代理模式的应用场景。
?