zoukankan      html  css  js  c++  java
  • 代理模式

    一个类代表另一个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。可以理解为内存中没有这个对象就创建,有就直接返回这个对象。

    • 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

    以获取磁盘中的图片为例,总共分三步:

    • 1、创建一个接口。

      public interface Image {
         void display();
      }
    • 2、创建实现接口的实体类 RealImage。对应代理类:ProxyImage。

      public class RealImage implements Image {
      
          private String fileName;
      
          public RealImage(String fileName) {
              this.fileName = fileName;
              loadFromDisk(fileName);
          }
      
          private void loadFromDisk(String fileName) {
              Log.e("RealImage", "loading " + fileName);
          }
      
          @Override
          public void display() {
              Log.e("RealImage", "Displaying " + fileName);
          }
      }
      public class ProxyImage implements Image {
      
          private String fileName;
          private RealImage realImage;
      
          public ProxyImage(String fileName) {
              this.fileName = fileName;
          }
      
          @Override
          public void display() {
              if (realImage == null) {
                  realImage = new RealImage(fileName);
              }
              realImage.display();
          }
      }
    • 3、当被请求时,使用 ProxyImage 来获取 RealImage 类的对象。

      Image image = new ProxyImage("test_10mb.png");
      // 第一次是new的,图像从磁盘加载
      image.display();
      // 第二次取缓存,图像不需要从磁盘加载
      image.display();
  • 相关阅读:
    day044CSS相关属性之盒子模型、float浮动、overflow溢出属性、position定位
    day045JavaScript的介绍、数据类型
    day043 前端之CSS引入方式、选择器、相关属性
    day042前端之HTML
    攻防世界wp--web simple_php
    hackbar的谷歌和火狐破解方式
    攻防世界wp--web cookie
    攻防世界wp-misc stegano
    攻防世界wp-misc 功夫再高也怕菜刀
    攻防世界wp-misc base64stego
  • 原文地址:https://www.cnblogs.com/cjjjj/p/13588121.html
Copyright © 2011-2022 走看看