语言: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
感觉逻辑这么简单没必要用类
|