由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
在代理模式中,一个类代表另一个类的功能,为其他对象提供一种代理以控制对这个对象的访问。这种类型的设计模式属于结构型模式。
代理模式的实现
//接口
public interface Product {
void show();
}
//接口的实体类
public class RealProduct implements Product {
@Override
public void show() {
System.out.println("获取到一个真实产品RealProduct!");
}
}
代理类提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。在代码中,一般代理会被理解为代码增强,实际上就是在原代码逻辑前后增加一些代码逻辑,而使调用者无感知。
//接口的代理类
public class ProxyProduct implements Product {
private RealProduct realProduct;
@Override
public void show() {
if(realProduct == null){
realProduct = new RealProduct();
}
pre(); //代理增强方法,处理代理之前要做的事情
realProduct.show();
post(); //代理增强方法,处理代理之后要做的事情
}
public void pre(){
System.out.println("代理之前要做的事情");
}
public void post(){
System.out.println("代理之后要做的事情");
}
}
public class ProxyMain {
public static void main(String[] args) {
ProxyProduct proxyProduct = new ProxyProduct();
proxyProduct.show();
}
}
前面几节的内容供大家参考
下一节:
桥接模式:【每天一个java设计模式(八)】 - 桥接模式
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/122072282
内容来源于网络,如有侵权,请联系作者删除!