专业的JAVA编程教程与资源

网站首页 > java教程 正文

【设计模式】java代码示例什么是代理模式

temp10 2024-10-24 17:22:42 java教程 12 ℃ 0 评论

代理模式,你可以想象成是一个“中间人”或“替身”的角色。比如说,你是一个明星,非常忙碌,不能亲自处理所有的事情,比如签合同、接广告等。于是,你雇佣了一个经纪人作为你的代理,帮你处理这些琐碎的事情。外界想要找你合作时,他们只需要和你的经纪人沟通,而不需要直接找到你。

在编程中,代理模式也是类似的。当你不想或者不能直接访问某个对象时,你可以创建一个代理对象来代表这个对象。所有的请求都会先经过代理对象,然后代理对象会将这些请求转发给真正的对象来处理。同时,代理对象还可以在转发请求之前或之后添加一些额外的处理逻辑。

【设计模式】java代码示例什么是代理模式

Java示例代码

首先,我们定义一个接口Image,它有一个方法display()用来显示图片。

// 图片接口  
interface Image {  
    void display();  
}  
  
// 实现图片接口的类,代表真实的图片对象  
class RealImage implements Image {  
    private String fileName;  
  
    public RealImage(String fileName) {  
        this.fileName = fileName;  
        loadImageFromDisk(fileName); // 假设这是一个耗时操作,从磁盘加载图片  
    }  
  
    // 模拟从磁盘加载图片  
    private void loadImageFromDisk(String fileName) {  
        System.out.println("Loading " + fileName);  
        // 这里只是模拟,真实情况下会有图片加载的代码  
    }  
  
    @Override  
    public void display() {  
        System.out.println("Displaying " + 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(); // 调用display方法,代理对象会检查并加载图片(如果需要的话),然后显示图片  
    }  
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表