一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。如在网页上查看一张图片,由于网速等原因图片不能立即显示,我们可以在图片传输过程中先把一些简单的用于描述图片的文字传输到客户端,此时这些文字就成为了图片的代理
package com.pattern.proxy; /** * 图像的基类 */ public interface Image { /*显示图像*/ public abstract void showImage(); } </span>具体类
package com.pattern.proxy; /** * 大图像的类 */ public class BigImage implements Image{ @Override public void showImage() { System.out.println("这是一张大图片,显示在网页上"); } } </span>代理类
package com.pattern.proxy; /** * 代理图像的类 */ public class ProxyImage implements Image{ private BigImage m_BigImage;//真实的大图像 /*显示图像之前的一些操作*/ public void showImagePre(){ System.out.println("图像很大,先暂时用一个和图像一样大的方框代表图像"); } @Override public void showImage() { this.showImagePre(); if(m_BigImage==null){ m_BigImage=new BigImage(); } m_BigImage.showImage(); this.showImageAft(); } /*显示图像之后的一些操作*/ public void showImageAft(){ System.out.println("图像显示完成"); } } </span>
package com.pattern.proxy; /** * 文件名:Main.java * 描述:代理模式讲解 * 创建人:林炳文 * 日 期:2015.2.2 **/ public class Main { public static void main(String[] args) { ProxyImage m_ProxyImage=new ProxyImage(); m_ProxyImage.showImage(); } }</span>
原文地址:http://blog.csdn.net/evankaka/article/details/43413013