代理模式概念
为其他对象提供一种代理以控制对这个对象的访问。
应用场景
- Windows 的快捷方式
- 网上购买电影票
- 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(); } }