• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ak1ak
V2EX  ›  程序员

如何优雅地处理包含继承关系的业务代码

  •  
  •   ak1ak · Feb 2, 2023 · 1570 views
    This topic created in 1205 days ago, the information mentioned may be changed or developed.

    Hello, all 。请教一个问题:

    存在一个基础类,包含基础属性和标识字段。同时还有很多业务类继承于这个基础类(拥有独特的业务字段),通过标识字段区分不同的业务。不同的业务类有不同的校验规则,还可能把基础类同属性的校验规则覆盖掉。 基于 Spring 该如何优雅地校验和处理这些业务。

    3 replies    2023-02-03 11:41:12 +08:00
    leeqingshui
        1
    leeqingshui  
       Feb 2, 2023
    可用模版方法模式解决:基础类同属性的校验规则写在父类的钩子函数中,如果业务子类不需要覆盖,那么钩子函数不需要重写,如果业务子类需要覆盖,那么就进行重写,这样可以兼容变化和不变的代码
    THESDZ
        2
    THESDZ  
       Feb 2, 2023
    根据你的标识,控制程序分支
    最简单的 switch
    复杂一点的就是 用一个 Map<string,interface>(或者其他)存储所有的适配器,通过统一的代理类调用
    代理类中根据标识,获取适配器,然后调用适配器的方法
    可以利用 spring 的 bean 工厂初始化代理类,自动获取所有的适配器。
    适配器也可以有基类,做默认实现。
    litchinn
        3
    litchinn  
       Feb 3, 2023
    可以参考 WxJava( https://gitee.com/binary/weixin-java-tools/wikis/MP_%E5%BE%AE%E4%BF%A1%E6%B6%88%E6%81%AF%E8%B7%AF%E7%94%B1%E5%99%A8 )里的这个路由,
    全局定义一个 Router ,Router 里包含自定义的 RouterRule ,RouterRule 里包含 Handler ,RouterRule 里的校验通过后执行对应的 Handler
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1730 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:20 · PVG 00:20 · LAX 09:20 · JFK 12:20
    ♥ Do have faith in what you're doing.