首页 代理设计模式
文章
取消

代理设计模式

代理模式概念

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

应用场景

  1. Windows 的快捷方式
  2. 网上购买电影票
  3. spring aop

    实现案例

    • 创建一个接口。
      1
      2
      3
      
      public interface Image {
      void display();
      }
      
    • 创建实现接口的类。 ```java 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); } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
创建实现了 Image 接口的代理类。
``` java
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();
   }
}
  • 当被请求时,使用 ProxyImage 来获取 RealImage 类的对象。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public class ProxyPatternDemo {
    
     public static void main(String[] args) {
        Image image = new ProxyImage("test_10mb.jpg");
    
        // 图像将从磁盘加载
        image.display();
        System.out.println("");
        // 图像不需要从磁盘加载
        image.display();
     }
    }
    
本文由作者按照 CC BY 4.0 进行授权

Vue学习与使用

单例设计模式

载入天数...载入时分秒...