代理模式说白了就是把要执行的代码交给代理来执行,在项目扩展的时候以及日志文件等有用,
最简单的例子,买火车票的时候可以从火车站或者12306网站直接购买,也可以通过第三方软件(代理者)购买,但是第三方软件(代理者)最终还是会在12306(被代理者)下单。
public class ProxyPatternDemo {
public static void main(String[] args) {
Image image = new ProxyImage("test_10mb.jpg");
// 图像将从磁盘加载
image.display();
System.out.println("--------------");
// 图像不需要从磁盘加载
image.display();
image.display();
}
}
//定义图像接口,有一个抽象的显示方法
interface Image {
void display();
}
//真是的图像加载类实现接口中的display方法
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);
}
}
//真是的图像加载类实现接口中的display方法
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();
}
理解代理模式
最新推荐文章于 2020-05-02 15:47:13 发布