Hello, all 。请教一个问题:
存在一个基础类,包含基础属性和标识字段。同时还有很多业务类继承于这个基础类(拥有独特的业务字段),通过标识字段区分不同的业务。不同的业务类有不同的校验规则,还可能把基础类同属性的校验规则覆盖掉。 基于 Spring 该如何优雅地校验和处理这些业务。
1
leeqingshui 2023-02-02 16:40:30 +08:00
可用模版方法模式解决:基础类同属性的校验规则写在父类的钩子函数中,如果业务子类不需要覆盖,那么钩子函数不需要重写,如果业务子类需要覆盖,那么就进行重写,这样可以兼容变化和不变的代码
|
2
THESDZ 2023-02-02 19:21:00 +08:00
根据你的标识,控制程序分支
最简单的 switch 复杂一点的就是 用一个 Map<string,interface>(或者其他)存储所有的适配器,通过统一的代理类调用 代理类中根据标识,获取适配器,然后调用适配器的方法 可以利用 spring 的 bean 工厂初始化代理类,自动获取所有的适配器。 适配器也可以有基类,做默认实现。 |
3
litchinn 2023-02-03 11:41:12 +08:00
可以参考 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 |