Language agnostic 设计模式误用的例子

Language agnostic 设计模式误用的例子,language-agnostic,design-patterns,Language Agnostic,Design Patterns,设计模式之所以伟大,是因为它们将潜在的复杂技术提炼为惯用的东西。通常,它有一个名字有助于沟通和理解 缺点是,它更容易把它们当作一个银弹,把它们应用到每一个情况,而不考虑背后的动机,并花一秒钟来考虑一个给定的模式是否真的适合于这种情况。 与之不同的是,我不是在寻找经常被误用的设计模式,但我很想看到一些真正可靠的设计模式被滥用的例子。我正在寻找一些案例,其中有人没有抓住要点,要么应用了错误的模式,甚至实施得很糟糕 这一点是,我想强调的是,设计模式不是禁用批判性分析的借口。另外,我想强调的是,不仅需要

设计模式之所以伟大,是因为它们将潜在的复杂技术提炼为惯用的东西。通常,它有一个名字有助于沟通和理解

缺点是,它更容易把它们当作一个银弹,把它们应用到每一个情况,而不考虑背后的动机,并花一秒钟来考虑一个给定的模式是否真的适合于这种情况。 与之不同的是,我不是在寻找经常被误用的设计模式,但我很想看到一些真正可靠的设计模式被滥用的例子。我正在寻找一些案例,其中有人没有抓住要点,要么应用了错误的模式,甚至实施得很糟糕


这一点是,我想强调的是,设计模式不是禁用批判性分析的借口。另外,我想强调的是,不仅需要了解模式是什么,还需要了解为什么它们通常是一种好的方法。

我有一个应用程序,我维护它,它使用提供者模式来处理几乎所有事情,几乎不需要什么。多层次的继承。例如,有一个由抽象BaseDataProvider实现的数据提供程序接口,该接口又由SqlDataProvider扩展。在每个层次结构中,每种类型只有一个具体的实现。显然,开发人员获得了一份关于实施企业架构的Microsoft文档,并且由于很多人使用此应用程序,因此决定它需要所有灵活性来支持多个数据库、多个企业目录和多个压延系统,即使我们只使用MS SQL Server、Active Directory、,交换

最重要的是,配置项(如凭据、URL和路径)到处都是硬编码的,并覆盖通过参数传递给更抽象类的数据。更改此应用程序非常类似于在毛衣上穿线。你拉得越多,事情就变得越复杂,你最终会在代码中做一些简单的改变


我正在慢慢地重写它——一部分是因为代码很糟糕,另一部分是因为它实际上是三个应用程序合并成一个,其中一个甚至都不需要。

我有一个应用程序,我维护它,它几乎什么都使用提供者模式——几乎不需要。多层次的继承。例如,有一个由抽象BaseDataProvider实现的数据提供程序接口,该接口又由SqlDataProvider扩展。在每个层次结构中,每种类型只有一个具体的实现。显然,开发人员获得了一份关于实施企业架构的Microsoft文档,并且由于很多人使用此应用程序,因此决定它需要所有灵活性来支持多个数据库、多个企业目录和多个压延系统,即使我们只使用MS SQL Server、Active Directory、,交换

最重要的是,配置项(如凭据、URL和路径)到处都是硬编码的,并覆盖通过参数传递给更抽象类的数据。更改此应用程序非常类似于在毛衣上穿线。你拉得越多,事情就变得越复杂,你最终会在代码中做一些简单的改变


我正在慢慢地重写它——一部分是因为代码很糟糕,另一部分是因为它实际上是三个应用程序合并成一个,其中一个甚至都不需要。

好吧,分享一点经验。在C语言中,我有一个很酷的设计,它使用了很多模式。。我真的用了很多,所以为了让故事简短,我不一一列举。但是,当我实际使用真实数据进行测试时,10^6对象与我漂亮的设计不匹配。通过分析它,我发现所有这些间接层次的多态性类、代理等都太多了。。所以我想我可以用更好的模式来重写它,使它更有效,但我没有时间,所以我实际上是按程序对它进行了黑客攻击,直到现在,它工作得更好。。唉,悲伤的故事

好吧,分享一点经验。在C语言中,我有一个很酷的设计,它使用了很多模式。。我真的用了很多,所以为了让故事简短,我不一一列举。但是,当我实际使用真实数据进行测试时,10^6对象与我漂亮的设计不匹配。通过分析它,我发现所有这些间接层次的多态性类、代理等都太多了。。所以我想我可以用更好的模式来重写它,使它更有效,但我没有时间,所以我实际上是按程序对它进行了黑客攻击,直到现在,它工作得更好。。唉,悲伤的故事

我看到一个asp.net应用程序,其中 ior,现在相当有能力的开发人员已经成功地使他的codebehinds单例认为每个页面都是唯一的,这在他的本地机器上运行得非常出色,直到测试人员为控制登录屏幕而斗争


纯粹是对独特的范围的误解,以及渴望使用这些设计模式的想法。

我见过一个asp.net应用程序,当时的年轻人,现在,相当有能力的开发人员已经设法有效地使他的codebehinds单例认为每个页面都是唯一的,这在他的本地机器上运行得非常出色,直到测试人员正在争夺登录屏幕的控制权为止


纯粹是对独特的范围的误解,以及渴望使用这些设计模式的想法。

+1是一个很好的描述,尤其是提到过度使用继承。这正是我见过的那种事。我认为最令人沮丧的是,当开发人员仅仅指向GoF时,很难反驳它+一个很好的描述,特别是提到过度使用继承。这正是我见过的那种事。我认为最令人沮丧的是,当开发人员仅仅指向GoF时,很难反驳它!一个有用的警示故事。我想在一个理想的世界里,你们可能会有一个测试,它可以更快地找到它,或者正如你们所说,找到一个更好的模式——但很快就可以避免整个重写。顺便说一句,我不是说我们应该破解所有东西,只是理解每一个设计决策的利弊。一个有用的警示故事。我想在一个理想的世界里,你们可能会有一个测试,它可以更快地找到它,或者正如你们所说,找到一个更好的模式——但很快就可以避免整个重写。顺便说一句,我不是说我们应该破解所有东西,只是要了解每一个设计决策的利弊。我想你指的是银弹我想你指的是银弹