结构型设计模式-代理模式

来源:互联网 发布:程序员联合网开发区 编辑:程序博客网 时间:2024/06/06 00:11

什么是代理模式

为其他对象提供一种代理,并由代理对象控制对原对象的引用,以间接控制对原对象的访问。

实现一个代理模式

interface Image {    public void displayImage();}//on System A class RealImage implements Image {    private String filename = null;    /**     * Constructor     * @param filename     */    public RealImage(final String filename) {         this.filename = filename;        loadImageFromDisk();    }    /**     * Loads the image from the disk     */    private void loadImageFromDisk() {        System.out.println("Loading   " + filename);    }    /**     * Displays the image     */    public void displayImage() {         System.out.println("Displaying " + filename);     }}//on System B class ProxyImage implements Image {    private RealImage image = null;    private String filename = null;    /**     * Constructor     * @param filename      */    public ProxyImage(final String filename) {         this.filename = filename;     }    /**     * Displays the image     */    public void displayImage() {        if (image == null) {           image = new RealImage(filename);        }         image.displayImage();    }}class ProxyExample {   /**    * Test method    */   public static void main(String[] args) {        final Image IMAGE1 = new ProxyImage("HiRes_10MB_Photo1");        final Image IMAGE2 = new ProxyImage("HiRes_10MB_Photo2");        IMAGE1.displayImage(); // loading necessary        IMAGE1.displayImage(); // loading unnecessary        IMAGE2.displayImage(); // loading necessary        IMAGE2.displayImage(); // loading unnecessary        IMAGE1.displayImage(); // loading unnecessary    }}
0 0