码迷,mamicode.com
首页 > 其他好文 > 详细

代理模式

时间:2018-01-20 16:32:38      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:案例   复杂   style   ide   eal   real   pre   bsp   扩展   

定义:一个类代表另一个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。通过一个中间层完成两个模块之间的交互。

技术分享图片

通过上面的图片,我们可以看到,通过增加代理来解耦A与C之间的调用,这样可以封装原来C调用A的一些相关细节,转换成C直接调用B中封装后
的代理方法,则等同于访问A。

优点: 1、职责清晰。 2、高扩展性。 3、智能化。
缺点:1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

使用:以下案例通过代理类ProxyImage实现对实体类的一些操作。代理类需要和实体类继承自同一个接口
1.创建图片接口:

public interface Image 
{
   void display();
}

2.创建实现接口的实体类。

public class RealImage implements Image 
{
   private String fileName;
   public RealImage(String fileName)
   {
      this.fileName = fileName;
      loadFromDisk(fileName);
   }

   public Override void display() {
      System.out.println("Displaying " + fileName);
   }

   private void loadFromDisk(String fileName){
      System.out.println("Loading " + fileName);
   }
}

public class ProxyImage implements Image{
   private RealImage realImage;
   private String fileName;

   public ProxyImage(String fileName){
      this.fileName = fileName;
   }

   public Override void display() {
      if(realImage == null){
         realImage = new RealImage(fileName);
      }
      realImage.display();
   }
}

3.当被请求时,使用 ProxyImage 来获取 RealImage 类的对象。

Image image = new ProxyImage("test_10mb.jpg");
image.display();

 

代理模式

标签:案例   复杂   style   ide   eal   real   pre   bsp   扩展   

原文地址:https://www.cnblogs.com/wang-jin-fu/p/8320873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!