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

    代理模式介绍:http://www.runoob.com/design-pattern/proxy-pattern.html

    个人理解:代理模式相当于用B类代替A类行使一些A类的功能,B类具有但不完全具有A类的功能。B类有点类似于A类的子类。

    代理模式的意图是为其他对象提供一种代理以控制对这个对象的访问。

     1、创建一个接口

    public interface Image {
           void display();
    }

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

    public class RealImage implements Image {
       private String fileName;
     
       public RealImage(String fileName){
          this.fileName = fileName;
          loadFromDisk(fileName);
       }
     
       @Override
       public 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;
       }
     
       @Override
       public void display() {
          if(realImage == null){
             realImage = new RealImage(fileName);
          }
          realImage.display();
       }
    }

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

    public class ProxyPatternDemo {
        public static void main(String[] args) {
          Image image = new ProxyImage("test_10mb.jpg");
          image.display();
       }
    }

    代理模式和工厂模式明显的区别在于:

    代理模式创建出来的对象只拥有原对象的部分功能,而工厂模式创建出来的对象具有原对象的全部功能。

  • 相关阅读:
    崔工读过的技术书籍,持续更新中!
    Python-S9——Day110-Git继续
    Python-S9——Day115-Flask Web框架
    树形dp 之 小胖守皇宫
    线性dp 之 奶牛渡河
    网课神器之obs-studio的安装使用
    Convert to Ones
    UVA 10653.Prince and Princess
    HDOJ 1051. Wooden Sticks
    洛谷P1063.能量项链
  • 原文地址:https://www.cnblogs.com/jwen1994/p/9983123.html
Copyright © 2011-2022 走看看