使用Java和Java框架当我遇到抽象工厂模式时,我已经开始颤抖了。在我看来,这是最滥用的设计模式。并非所有框架都滥用它,但有很多框架滥用它。它不适合所有模型,几乎100%的时间你都会做同样的事情,为什么抽象它呢?
您认为哪种设计模式是最滥用的设计模式?一个开发人员使用它但它不能很好地适应问题的地方。一个金锤子和一切看起来像钉子的情况。那么,当你在野外遇到它时,哪种设计模式会让你不寒而栗?
编辑:想到了Singleton。但是在最过度使用的问题上出现了这种情况。我要求最受虐待的人。 (或者使用不当)。答案 0 :(得分:16)
Singleton,它使得对代码进行单元测试非常困难,因为它会对系统的其他部分创建非常强大的引用。
答案 1 :(得分:2)
我同意Singleton。
但是因为人们通常将它作为直接的GoF香草来实现,而不考虑它应该如何销毁。
阅读John Vlissides的书“模式孵化:应用设计模式”(sanitised Amazon link)
中有趣的章节“杀死单身人士”。修改:在here行找到了“杀死单身人士”一文。
HTH
欢呼声
答案 2 :(得分:0)
在java中,我发现template method模式被大量使用。在大多数其他语言中,它几乎都是反模式。
答案 3 :(得分:0)
我也投票支持辛格尔顿。
我不太喜欢Singleton,因为它引入了难以发现的依赖关系。一个类可能依赖于Singleton,但除非您阅读代码,否则您无法看到它。
如上所述,这会导致单元测试问题(以及其他问题)。使用Registry模式而不是Singleton模式可以部分解决单元测试问题。