代理模式 -- 设计模式

瘦欲@ 提交于 2019-12-25 03:24:11

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。

思考: 这种代理模式是最简单的代理模式, 跟装饰器模式相类似, 但是在Java中还有JDK代理和子类代理的其他代理方式

package day0320.ProxyPattern;

public class Demo{

    public static void main(String[] args){
        Image image = new ProxyImage("C:/users/jack/desktop/test.png");
        image.display();
    }
}

interface Image {
    void display();
}

class RealImage implements Image{

    private String path;

    @Override
    public void display(){
        System.out.println("displaying image: " + this.path);
    }

    public void loadFromDisk(String path) {
        this.path = path;
        System.out.println("loading image from disk: " + path);
    }
}

class ProxyImage implements Image{

    RealImage realImage;
    String filePath;

    public ProxyImage(String filePath){
        this.realImage = new RealImage();
        this.filePath = filePath;
    }

    public ProxyImage(RealImage realImage, String filePath){
        this.realImage = realImage;
        this.filePath = filePath;
    }

    @Override
    public void display(){
        if (this.filePath == null) {
            throw new RuntimeException("Can't load this file: " + this.filePath);
        } else if (this.filePath.startsWith("C:")) {
            throw new RuntimeException("You have no privillage to access file in disk C:");
        }
        realImage.loadFromDisk(filePath);
        realImage.display();
    }
}

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!