不要为了设计而设计

作者:vkvi 来源:ITPOW(原创) 日期:2021-11-23

我们以对 Datas 按 Group 进行分组为例,最简单的设计是:

将分组信息记录在 Group 中,Group 有个方法 Match,Match 参数是 Datas,然后将符合条件的 Datas 返回。

总共就 2 个类,一个 Data,一个 Group。

Group.Match 是过滤所有符合本组条件的,但是有时候,并不是 AND 关系,而是 OR 关系,比如我们的条件是:女性 或 12 岁以下。那么单一个 Group 就不够了,Group 下面还要设置 Condition,每个 Condition 进行 Match,再由 Group 来合并。

到此,功能增加了,但是整个程序还是处于简单状态,有人可能会往复杂的方面设计:

Group.Match?这不行,Match 这怎么能由 Group 来处置呢?应该再新增一个类,叫 Grouper,由 Grouper.Match 来处置。

返回结果应该叫 Result,Result 不仅包含了符合条件的 Datas,还要包含当前 Group。

还有,上面都是处理单一 Group 的,要处理多个 Group,我们还得对 Grouper 进行升级,再包装一个 GrouperFactory,结果也不光是 Result,可以叫 FactoryResult。

其实,我倒是觉得,真没必要搞这么复杂。我记得以前流行一个东西,叫 Repository,也就是说它负责存储,比如:Person、PersonRepository,Person 对应有哪些属性,而 PersonRepository 负责与存储打交道。

真的没必要把简单事情搞这么复杂,你就让 Person 与存储打交道不行?非得交给另一个类来处理?

不要说可扩展,这种可扩展,你这辈子遇到过吗?有这功夫,多写几句注释,多检查几遍代码不好吗?为了设计而设计,何必呢?

相关文章