Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 有谁能给我一个过度使用的设计模式的例子吗?_Language Agnostic_Design Patterns_Oop - Fatal编程技术网

Language agnostic 有谁能给我一个过度使用的设计模式的例子吗?

Language agnostic 有谁能给我一个过度使用的设计模式的例子吗?,language-agnostic,design-patterns,oop,Language Agnostic,Design Patterns,Oop,我一直在听和读有关人们遇到过度使用设计模式的案例。好吧,误用的设计模式是可以理解的现象。过度使用的设计模式到底意味着什么 你有什么例子吗?为什么你认为有太多的模式?这实际上是我们唯一的杰夫·阿特伍德(Jeff Atwood)在《恐怖编码》一书中讨论的: 我想说的是,这部电影被过度使用了。通常有比使用本质上是一个全局变量更好的解决方案 我猜单例很容易被过度使用(尽管它确实有其合法的用途) 对单身模式的上瘾被称为。:)症状至少包括不必要的高耦合,以及测试变得更加困难 编辑:作为治疗单发性眼炎的处方药

我一直在听和读有关人们遇到过度使用设计模式的案例。好吧,误用的设计模式是可以理解的现象。过度使用的设计模式到底意味着什么


你有什么例子吗?为什么你认为有太多的模式?

这实际上是我们唯一的杰夫·阿特伍德(Jeff Atwood)在《恐怖编码》一书中讨论的:


我想说的是,这部电影被过度使用了。通常有比使用本质上是一个全局变量更好的解决方案

我猜单例很容易被过度使用(尽管它确实有其合法的用途)

对单身模式的上瘾被称为。:)症状至少包括不必要的高耦合,以及测试变得更加困难

编辑:作为治疗单发性眼炎的处方药,您可以尝试内联单发,如Joshua Kerievsky所述


编辑2:有关单例的详细讨论,请参阅这个老问题:

单例模式,它只适用于极少数情况,使测试更困难。它不仅被过度使用,而且在Java和C#中的实现往往很糟糕——人们经常在不合适而且相对难以正确使用的情况下匆忙使用双重检查锁定

编辑:我真的应该意识到每个人都会发布同样的东西

下一个例子是工厂模式,特别是它在JavaDOMAPI中的使用。哎呀。

这可能是最糟糕的。我经常看到在许多情况下,当它超出范围时使用它,直接实例化对象更合适


在那之后,我认为这种方法被过度用作实例化对象的快捷方式,很多时候都没有真正的需要。

我将对过度使用的Singleton进行权衡。通常,开发人员只学习这一种模式,并在静态类同样有效的情况下使用它。

我也支持Singleton:一种抽象的全局模式


工厂,因为这使我们更容易不去考虑在给定的程序中对象是如何连接在一起的。

我投票支持ActiveRecord


许多流行的数据访问框架使用ActiveRecord作为唯一的数据访问模式,这是一种一刀切的解决方案,尽管Martin Fowler的《企业应用程序体系结构模式》一书描述了几种其他数据访问模式,并详细说明了每种模式的优点以及如何决定何时使用每种模式。

序言:一般来说,单例模式被认为是最被滥用的模式,如果仅仅是因为事实上许多人会使用它来编写在线编程,如果不是事实上的话,而其他人则用它来代替全局变量

正文:有一本书叫做《模式语言》,它比著名的GoF早了几年。它要求在一个项目的不同方面有相似的语言——它显然对“设计模式”有重大影响,而那些知道这两个文本的人都认为它是优越的。 我个人的经验是,GoF只在某些情况下有用,远远不能涵盖所有OOP。事实上,我觉得很有趣的是,一些模式在其他语言中已经过时,而其他模式只是重复地描述了相同的场景(适应和翻译的东西之间真的有那么大的区别吗?)

一般来说,模式是一件好事。Singleton通常使用静态getInstance方法是很好的。许多MVC结构使用类似的命名约定是很好的。另一方面,模式不是一切,需要记住。

建议阅读:
所谓的JavaBeans模式(有时):每个字段的getter和setter。面向对象,它不再是一种设计模式,而是一种生活方式。我在对象中看到了很多过程代码,为了对象看到了很多对象,因为时代精神说“大概你是面向对象的”,而几行C和一个结构也可以


我把它称为最过度使用的设计模式,因为它(可能)是最广泛使用的设计模式,其优点很少受到质疑。

我认为比过度使用的设计模式更糟糕的问题是,热情的开发人员误用了模式,他们最近学习了一种新的模式工具,并决定需要试用它。最近我读了Misko Hevery的一些关于依赖注入的blog()文章。他的主要主张之一是,作为全局实例实现的单例模式严重限制了可测试性,应该避免

几天前,我从Christian Gruber的博客上读到一篇关于模式的有趣观点。他建议,它们可以作为讨论体系结构的工具,但不应在设计构思期间使用,以免软件体系结构退化为他所称的“数字绘画”。请参阅关于设计模式的段落:


因此,设计模式的问题可能是误用和隧道视觉,这是由所有设计良好的软件都必须符合“四人帮”中描述的模式之一的观念所导致的。

我一直看到在只有一个提供者的情况下使用提供者模式。这似乎是一个非常多的额外工作,没有任何好处。

当我第一次看到一个名为SomethingFactoryFactory的Java类时,我认为这是一个笑话。唉…@比尔让我想起:)我还没有看到C#one的糟糕实现,因为他们都在使用你的代码Jon。事实上,这是个谎言,我见过一个C#MVP没有使用任何锁定mechanism@Chris:我见过完全没有锁定的人,以及使用双重检查锁定而没有易失性修改器的人。在Java中太常见了。。。希望这篇文章能产生一些影响:)如果我用的是一种语言呢