Martin Fowler 谈反模式

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

andrew koenig 在 joop [1] 的一篇文章中首先创造了术语“反模式”,遗憾的是在 Internet 上没有。基本思想(我记得 [2] )是反模式在您开始时似乎是个好主意,但会给您带来麻烦。从那以后,这个词经常被用来表示任何坏主意,但我认为最初的焦点更有用。

在论文中 koenig 说:

反模式就像模式一样,只是它提供的不是解决方案,而是表面上看起来像解决方案但实际上不是解决方案的东西。

——安德鲁·科尼格

这就是使一个好的反模式与一件坏事分开来指出和嘲笑的原因。它看起来像是一个好的解决方案这一事实是它的根本危险。因为看起来不错,所以理智的人会走这条路——只有你付出了很多努力,你才会知道这是不好的结果。

在编写反模式的描述时,如果您选择了错误的路径,描述如何摆脱麻烦是很有价值的。我认为这很有用但不是必需的。如果没有摆脱它的好方法,那不会降低警告的价值。

记住相同的解决方案在某些情况下可能是好的模式而在其他情况下可能是反模式是很有用的。解决方案的价值取决于您使用它的环境。

笔记

1:面向对象程序设计杂志,第 8 卷,第 1 期。 1. 1995 年 3 月/4 月,随后在 linda rising 编辑的"the patterns handbook" 中重印(剑桥大学出版社)

2:我没有论文的副本,所以我主要靠记忆和一些旧笔记。