十三、代理模式
代理模式(proxy pattern),通过一个类来代表另一个类的功能,对外提供接口和方法,从而保护了被代理类的数据与安全。
简介
代理模式类似于一种封装
- 优点:职责清晰、高扩展性和智能化。
- 缺点:由于代理类的出现,肯能会造成部分效率的损失以及系统的复杂度。
实现
创建一个Image接口和它的普通实现类,在创建一个实现该接口的代理类。
- 创建接口
Image.java
public interface IImage {
void display();
}
- 创建实现类
RealImage.java
public class RealImage implements IImage{
private String fileName;//文件名
public RealImage(String fileName){
this.fileName = fileName;
loadFromDisk(fileName);
}
private void loadFromDisk(String fileName) {
System.out.println("从磁盘加载图片:"+fileName);
}
@Override
public void display() {
System.out.println("显示图片:"+fileName);
}
}
ProxyImage.java
public class ProxyImage implements IImage {
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();
}
}
- 演示
ProxyPatternDemo.java
public class ProxyPatternDemo {
public static void main(String[] args){
IImage image = new ProxyImage("./test.jpg");
//从磁盘加载
image.display();
System.out.println();
}
}
- 输出
从磁盘加载图片:./test.jpg
显示图片:./test.jpg