结构模式之代理模式Proxy


 

应用场合举例:


代理服务器


缩略图一览显示和实际图片单张显示


授权机制

 

 

package com.javaeye.kang.proxy;

 

// 图 片代理, 显 示 缩 略 图 片

// 代理 类

class ImageProxy {

      private ImageDisplay imageDisplay ;

      public ImageProxy(ImageDisplay imageDisplay) {

            this . imageDisplay = imageDisplay;

      }

      public void displayBreviaryImage() {

            System. out .println( " 显 示 缩 略 图 片 " );

      }

      // 响 应 鼠 标 点 击缩 略 图 的操作, 显 示 实际图 片

      public void pressMouse() {

            imageDisplay .displayFactImage();

      }

}

 

// 实际 工作 类

class ImageDisplay {

      //" 显 示 实际图 片 " 这 个操作很耗 资 源

      public void displayFactImage() {

            System. out .println( " 显 示 实际图 片 " );

      }

}

 

// 客 户 端

public class ProxyTest {

      public static void main(String[] args) {

            // 可以将 ImageDisplay 对 象注入(使用 spring )

            ImageProxy imageProxy = new ImageProxy( new ImageDisplay());

            // 客 户 端 调 用 时 只是感 觉 和代理 类 打交道

            imageProxy.displayBreviaryImage(); // 显 示 缩 略 图 片

            imageProxy.pressMouse(); // 鼠 标 点 击 , 显 示 实际图 片

      }

}

 

测试结果:

 

显 示 缩 略 图 片

显 示 实际图 片

 

 

改进,面向接口编程

 

/*

  * 代理模式

  * 改 进 :面向接口 编 程

  */

// 图 片代理 类 , 显 示 缩 略 图 片

class ImageProxy {

      private IImageDisplay iImageDisplay ;

      public ImageProxy(IImageDisplay iImageDisplay) {

            this . iImageDisplay = iImageDisplay;

      }

     

      public void displayBreviaryImage() {

            System. out .println( " 显 示 缩 略 图 片 " );

      }

      // 响 应 鼠 标 点 击缩 略 图 的操作, 显 示 实际图 片

      public void pressMouse() {

            iImageDisplay .displayFactImage();

      }

}

 

// 面向接口 编 程

interface IImageDisplay {

      public abstract void displayFactImage();

}

 

// 实际 工作 类

class ImageDisplay implements IImageDisplay {

      //" 显 示 实际图 片 " 这 个操作很耗 资 源

      public void displayFactImage() {

            System. out .println( " 显 示 实际图 片 " );

      }

}

 

// 客 户 端

public class ProxyTest {

      public static void main(String[] args) {

            // 可以将 ImageDisplay 对 象注入(使用 spring )

            ImageProxy imageProxy = new ImageProxy( new ImageDisplay ());

            // 客 户 端 调 用 时 只是感 觉 和代理 类 打交道

            imageProxy.displayBreviaryImage(); // 显 示 缩 略 图 片

            imageProxy.pressMouse(); // 鼠 标 点 击 , 显 示 实际图 片

      }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值