• 徒手撸设计模式代理模式


    概念

    在代理模式(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:182022-06-26 17:21:25.367 INFO  生产一辆汽车,名字叫宝马 【http-nio-8081-exec-4】【RealProduction:122022-06-26 17:21:25.368 INFO  生产一辆汽车,名字叫宝马 【http-nio-8081-exec-4】【RealProduction:12】

     

  • 相关阅读:
    python sys.path.append
    python中的map()函数
    python中的map、filter、reduce函数
    上传文件2.0--drp203
    The import org.apache.commons.fileupload cannot be resolved
    让我会好好学习一阵子的东西
    【JSP】--Error错误页设置,声明式异常--188 drp
    【JSP】--重定向,转发--186 drp
    【JSP】--路径问题--如何去掉../,直接写绝对路径
    主备切换,双机热备,负载均衡,nginx
  • 原文地址:https://www.cnblogs.com/hikoukay/p/16413924.html
Copyright © 2020-2023  润新知