徒手撸设计模式-代理模式
2022-06-26 17:33 hikoukay 阅读(14) 评论(0) 编辑 收藏 举报概念
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
参考链接: https://www.runoob.com/design-pattern/proxy-pattern.html
代码案例
接口类
/** * 代理模式接口 */ 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); } }
测试案例
2022-06-26 17:21:25.366 INFO 代理创建对象 【http-nio-8081-exec-4】【ProxyProduction:18】 2022-06-26 17:21:25.367 INFO 生产一辆汽车,名字叫宝马 【http-nio-8081-exec-4】【RealProduction:12】 2022-06-26 17:21:25.368 INFO 生产一辆汽车,名字叫宝马 【http-nio-8081-exec-4】【RealProduction:12】