设计模式实际场景探讨

2020-12-09 21:12:08 +08:00
 beryl

语言: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,但是之前没用过,好像也不太适合,因为还需要返回值

也看了一些其他的策略模式这种,但是都不是那么好抽象

1836 次点击
所在节点    程序员
7 条回复
louiswang002
2020-12-09 21:32:43 +08:00
可能策略模式是最适合的设计模式,定义一个抽象类包括 A B C D 四个属性,再定义 K1-K15 的实现类继承抽象类,具体 A B C D 得属性值在实现类里面处理
across
2020-12-09 21:36:59 +08:00
设计模式,不是用在这里的
freebird1994
2020-12-09 21:59:56 +08:00
大量的 if else 场景大多数时候都可以用模板方法+策略模式解决
xuanbg
2020-12-10 00:10:59 +08:00
查表
beryl
2020-12-10 09:51:59 +08:00
@louiswang002 这样会不会类太多了最后
louiswang002
2020-12-10 10:50:50 +08:00
@beryl 会有些多,不过牵涉到处理逻辑,我暂时没想到很好的处理方法;你可以看一下语言层面有没有一些特性辅助处理,如果有更好的方式也可以分享一下
zypy333
2020-12-10 17:57:17 +08:00
感觉逻辑这么简单没必要用类

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

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

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

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

© 2021 V2EX