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();
  • 相关阅读:
    Navsion二次开发_学习笔记
    《软件开发者路线图:从学徒到高手》笔记
    Concurrency并发性
    Excel VBA 函数
    在excel worksheet中添加button 和对Excel workbook做权限控制相关的新知识
    outline (group) 在Excel worksheet 中
    自主学习进度(软件工程)
    四则运算实现2(JAVA)
    简单四则运算实现(JAVA)
    数学建模(Lingo)(非线性整数规划)
  • 原文地址:https://www.cnblogs.com/cjjjj/p/13588121.html
Copyright © 2011-2022 走看看