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

2023-02-02 16:32:04 +08:00
 ak1ak

Hello, all 。请教一个问题:

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

995 次点击
所在节点    程序员
3 条回复
leeqingshui
2023-02-02 16:40:30 +08:00
可用模版方法模式解决:基础类同属性的校验规则写在父类的钩子函数中,如果业务子类不需要覆盖,那么钩子函数不需要重写,如果业务子类需要覆盖,那么就进行重写,这样可以兼容变化和不变的代码
THESDZ
2023-02-02 19:21:00 +08:00
根据你的标识,控制程序分支
最简单的 switch
复杂一点的就是 用一个 Map<string,interface>(或者其他)存储所有的适配器,通过统一的代理类调用
代理类中根据标识,获取适配器,然后调用适配器的方法
可以利用 spring 的 bean 工厂初始化代理类,自动获取所有的适配器。
适配器也可以有基类,做默认实现。
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/912627

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX