[设计模式] 策略模式是否就可以用 map 来实现

2022-03-21 17:37:07 +08:00
 VchentozV
如题,感觉 策略模式还是没法免除 if else (选择不同的策略),然后果真用 map 就可以替代么?
1402 次点击
所在节点    问与答
11 条回复
hay313955795
2022-03-21 17:41:22 +08:00
那用枚举,是不是也可以
VchentozV
2022-03-21 17:53:57 +08:00
@hay313955795 c++ 的枚举是写死的
hay313955795
2022-03-21 18:01:18 +08:00
@VchentozV 我说的是 java...
VchentozV
2022-03-21 18:11:45 +08:00
oldshensheep
2022-03-21 18:15:42 +08:00
用 Map 也可以实现策略模式,枚举也行,利用多态也行。都差不多吧,就是有的比较麻烦。我一般也就是用 Map
VchentozV
2022-03-21 18:22:54 +08:00
@oldshensheep 对的,我就是想实现得简单一点,写代码唯快不破
wolfie
2022-03-21 18:24:42 +08:00
这不就是接口用 Map 接参行为。
VchentozV
2022-03-21 18:30:21 +08:00
@wolfie 哈哈哈 无招胜有招
strawberryBug
2022-03-21 18:54:16 +08:00
当然可以啊,key 是 enum ,value 写个 function interface 就行。不过这种策略模式的实现需要注意下事务的问题
Leviathann
2022-03-21 19:19:49 +08:00
策略模式和怎么选择策略无关吧
如果枚举值可以是策略,还是用枚举比较好
VchentozV
2022-03-22 10:07:36 +08:00
@Leviathann 使用哪种策略,是不是也要 if else ?

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

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

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

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

© 2021 V2EX