
语言:Java 业务场景为: 有 N 个 K:K1->K15 每个 K 均有相同的 4 个属性 A 、B 、C 、D 但是每个 K 的属性计算规则不一样: 例如:
if K = K1: if K1.A = -1 K1.B = false else 0 < K1.A < 15 K1.C = x K1.B = true K1.D = x return K1 if K = K2: if K2.A < 0.5 K2.B = false 如果要硬写的话,要写一堆 if-else, 想到使用规则引擎 easyrule,但是之前没用过,好像也不太适合,因为还需要返回值
也看了一些其他的策略模式这种,但是都不是那么好抽象
1 louiswang002 2020-12-09 21:32:43 +08:00 via iPhone 可能策略模式是最适合的设计模式,定义一个抽象类包括 A B C D 四个属性,再定义 K1-K15 的实现类继承抽象类,具体 A B C D 得属性值在实现类里面处理 |
2 across 2020-12-09 21:36:59 +08:00 via iPhone 设计模式,不是用在这里的 |
3 freebird1994 2020-12-09 21:59:56 +08:00 via Android 大量的 if else 场景大多数时候都可以用模板方法+策略模式解决 |
4 xuanbg 2020-12-10 00:10:59 +08:00 查表 |
5 beryl OP @louiswang002 这样会不会类太多了最后 |
6 louiswang002 2020-12-10 10:50:50 +08:00 via iPhone @beryl 会有些多,不过牵涉到处理逻辑,我暂时没想到很好的处理方法;你可以看一下语言层面有没有一些特性辅助处理,如果有更好的方式也可以分享一下 |
7 zypy333 2020-12-10 17:57:17 +08:00 感觉逻辑这么简单没必要用类 |