![]() |
1
1
根据您的评论和更新,我认为这段代码不会太脆弱。如果你改变一个策略类型的调用链(dou1,dou2,等等)或者添加策略,那么维护起来会更困难。我建议使用 abstract factory 我更喜欢这种方法的原因有两个。首先,它只根据需要创建策略,所以您不需要构建不需要的对象。其次,它封装了用户的选择,因为这是唯一需要查找的地方(您可以使用依赖注入来构建它,但是您还需要其他地方来管理构建)。
然后,像这样使用:
或者甚至是用chaning:
|
![]() |
2
2
嗯,好吧,我觉得它不太脆。不过,你不需要绳子。您可以简单地使用有序数组,因为命名无论如何都对应于0,1,2,3。如果您担心提供的策略或类无效,可以向管理器中添加一些验证。
而不是用你的关联键来调用策略,你只是
另一种方法是
另一方面,不要相信selectbox的输入。仅仅因为selectbox提供了固定的选项,并不意味着恶意用户无法修补请求。必须对所有请求数据进行清理和双重检查。 |
![]() |
3
0
如果策略函数不需要状态,则可以切换到函数式编程,并将整个类替换为:
当然,你也可以用一个类来代替一个函数:P。 “Stringly Typed”修饰语不适用于PHP,因为它是弱类型的,并且已经在内部使用字符串存储符号(类和函数名、变量等)。因此,对于反射,字符串数据类型通常是最适合的。我们不会讨论这对整个语言意味着什么。 |
![]() |
Ben · 统计向量中的单词在字符串中出现的频率 6 月前 |
![]() |
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 8 月前 |
![]() |
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 8 月前 |
![]() |
user764754 · 防止多行原始字符串文字中出现新行字符 8 月前 |
![]() |
Bogaso · 从列表中返回与模式匹配的元素 8 月前 |
![]() |
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 8 月前 |