命令模式导致类爆炸

时间:2011-02-05 17:43:34

标签: testing agile command-pattern

似乎每当我使用命令模式时,它总是导致比我不使用它时更多的类。这似乎很自然,因为我们在不同的类中一起执行相关代码块。如果我没有完成10或12个Command子类,我可能会认为这个项目本来只会使用6或7个类,否则不会打扰我。对于通常的7级项目,有19个左右的课程似乎差不多。

真正困扰我的另一件事是测试所有这些Command子类是一件痛苦的事。在我接到最后几个命令之后,我感到迟钝,好像我移动得更慢,不再灵活。

这对你来说听起来很熟悉吗?我做错了吗?我只是觉得我在这个项目的后期失去了敏捷,而且我真的不知道如何以前几天的速度不断地实施和测试。

2 个答案:

答案 0 :(得分:5)

设计模式是以通用方式解决问题的通用模板。权衡正是你所看到的。发生这种情况是因为您需要自定义通用方法。不过,12个命令类对我来说似乎并不是很重要。

使用命令模式,希望命令很简单(只是一个执行方法,对吧?),因此很容易测试。此外,它们应该是可以单独测试的,即您应该能够在很少或没有依赖性的情况下轻松地测试命令。

你应该看到的好处是双重的:

1)您应该通过使用您选择的模式简化您的特定复杂方法。即快速变得丑陋的东西现在应该更优雅。

2)由于简化的方法和测试各个组件的简便性,您应该更快。

您是否可以使用其他模式,例如复合模式,并使用良好的OO设计来避免重复代码(如果您要复制代码......)?

答案 1 :(得分:4)

这似乎不是很多命令类,但我同意你的看法,如果它们占你班级的60%以上,它会闻起来有点香味。如果项目足够复杂,值得使用命令模式,我怀疑你会发现有些类要求拆分。如果没有,也许命令模式是过度的。

这里的其他答案对降低命令的复杂性提出了很好的建议,但我赞成简单,我可以找到它(bowling game)。