结构型模型之-代理模式(proxyPattern)
1 代理模式简介
- 代理模式主要是用中间层控制原生对象的访问
- 和装饰器模式的区别:装饰器模式为了
增强功能
,而代理模式是为了加以控制
。
2 代理模式图解
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3f375c26e4b14c8e74b810a454a498c3.jpeg)
3 代理模式简单实现
3.1 代码组成类
Image
ProxyImage
RealImage
TestProxy
3.2 具体代码
Image
package com.shufang.struct_type.proxy_pattern;
public interface Image {
void display();
}
RealImage
package com.shufang.struct_type.proxy_pattern;
public class RealImage implements Image {
private String name;
public RealImage(String name) {
this.name = name;
loadFromDisk(name);
}
@Override
public void display() {
System.out.println("displaying " + this.name);
}
public void loadFromDisk(String name){
System.out.println("load " + name + "from disk.......");
}
}
ProxyImage
package com.shufang.struct_type.proxy_pattern;
public class ProxyImage implements Image {
private String name;
private RealImage realImage;
public ProxyImage(String name) {
this.name = name;
}
@Override
public void display() {
if (this.realImage == null){
realImage = new RealImage(this.name);
}
realImage.display();
}
}
TestProxy
package com.shufang.struct_type.proxy_pattern;
public class TestProxy {
public static void main(String[] args) {
Image image = new ProxyImage("干柿鬼蛟");
image.display();
System.out.println("------------");
image.display();
}
}