概念
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
参考链接: 代理模式 | 菜鸟教程
代码案例
接口类
/**
* 代理模式接口
*/
public interface ProxyCars {
String product();
}
真正的生产类
@Slf4j
public class RealProduction implements ProxyCars {
private String carName;
@Override
public String product() {
log.info("生产一辆汽车,名字叫{}", carName);
return "生产出一辆 : "+carName;
}
public RealProduction(String carName) {
this.carName = carName;
}
}
代理生产类
@Slf4j
public class ProxyProduction implements ProxyCars {
private RealProduction realProduction;
private String carName;
public ProxyProduction(String carName) {
this.carName = carName;
}
@Override
public String product() {
if (Objects.isNull(realProduction)){
log.info("代理创建对象");
realProduction=new RealProduction(carName);
}
return realProduction.product();
}
}
测试主类
/**
* 设计模式控制器
*/
@RestController
@RequestMapping("/designPattern")
@Slf4j
public class DesignController {
@GetMapping("/proxy")
public ResponseModel proxy(String name) {
ProxyCars proxyCars= new ProxyProduction(name);
String product = proxyCars.product();
String product1 = proxyCars.product();
ArrayList<String> productList = new ArrayList<>();
productList.add(product);
productList.add(product1);
return new ResponseModel("代理模式完成", 200,productList);
}
}
测试案例