妙博客

主机评测 香港服务器 洛杉矶VPS测评

设计模式-JAVA-代理模式(Proxy)

代理模式是一种结构型设计模式,它允许通过代理对象控制对另一个对象的访问。代理对象充当客户端和实际对象之间的中介,隐藏了实际对象的复杂性。

下面是一个简单的代理模式示例,其中代理对象控制对实际对象的访问:

// 定义一个接口
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();
        System.out.println("");
        // 图像不需要从磁盘加载
        image.display();
    }
}


在上面的示例中,RealImage是实际对象,ProxyImage是代理对象。当客户端调用display()方法时,代理对象首先检查是否已经创建了实际对象。如果没有,它将创建一个新的实际对象并调用其display()方法。如果已经创建了实际对象,则直接调用其display()方法。这样,代理对象可以控制对实际对象的访问,并在必要时延迟实际对象的创建。



JAVA7大原则和23种设计模式汇总,点我查看

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2