我正在研究模式和反模式。我对模式有一个清晰的概念,但我没有反模式。来自网络和维基百科的定义让我很困惑。

有人能用简单的话给我解释一下什么是反模式吗?目的是什么?他们做什么?这是好事还是坏事?


当前回答

这是制造混乱的常见方法。例如,god/厨房墨水类(做所有事情)。

其他回答

有趣的是,解决问题的特定方法可以是模式也可以是反模式。单例就是最好的例子。它将出现在两套文学作品中。

因为模式是被发现的,而不是被创造出来的,Allen Holub,这种发现是通过重复发生的;如果我们发现了一个解决特定问题的模式,但不是根据领域专家的知识和经验以正确的方式解决的——我们倾向于称其为反模式

模式:解决常见的、反复出现的问题的正确方法。 反it模式:不是解决常见的、反复出现的问题的正确方法。 这两种方法都是基于最新的知识

和…昨天的有害实践就是明天的反模式Neal Ford,持续交付的工程实践

DevOps世界示例

它曾经是一个最佳实践(构建共享资源)

但在云世界中,当我们在云中管理资源时,它引入了耦合。

所以现在我们倾向于基于解耦或解耦来构建我们的设计

因此,对于特定的领域,例如DevOps:

过去: 共享资源== pattern ==好事 礼物: 共享资源==反模式==坏事 解耦==模式==好事

总之

更喜欢模式而不是反模式


图片来源:Neal Ford,持续交付工程实践

这是制造混乱的常见方法。例如,god/厨房墨水类(做所有事情)。

当您以非法的方式滥用设计模式,或者您不知道它的实际用法时,有时会使用它。例如,为简单类使用构建器模式,或者为代码中使用的每个Active类定义一个单例实例。

它也可能超出了设计模式。例如,在Java中将局部变量定义为final,或者当您可以简单地检查输入是否为空时使用try / catch作为NullPointerException,或者在使用对象(就像您在其他一些语言中所做的那样)后将其置空,而您没有注意到垃圾收集机制,或者调用system.gc()以使内存为空,以及许多其他误解,这些很可能被认为是Cargo-Cult现象。

就像设计模式一样,反模式也是一个模板,也是解决某个问题的可重复方式,但是以非最佳和无效的方式。