设计模式简介
我讨厌那种对某事一无所知的感觉。
这就是冒名顶替综合症的根源。
当我的队友说“哦,只需使用 X 模式”时,我有这种感觉,但我不知道那是什么。
这就是为什么我研究并搜索互联网上有关设计模式的各种资源。
我将把它们全部混合到这个设计模式系列中。
这是本系列的第一篇文章,我们将讨论:
- 什么是设计模式?
- 设计模式的历史
- 你为什么要学习它们?
- 不同类型的设计模式
设计模式
如果你用谷歌搜索设计模式,你会得到类似这样的结果:
在软件工程中,软件设计模式是针对软件设计中特定环境中常见问题的通用、可重用的解决方案。它并非可以直接转换为源代码或机器码的最终设计。
老实说,这听起来太复杂了。
简单来说,设计模式是软件设计中常见问题的解决方案。你可以把它们看作是蓝图,可以自定义来解决代码中反复出现的问题。
模式并非是可以简单复制的代码片段。模式提供的是通用的解决方案,您可以遵循并修改该解决方案以满足特定应用的需求。
模式常常与算法混淆,它们实际上都为常见问题提供了解决方案。算法提供了解决方案的逐步指导,而模式则提供了解决方案的高级概念。
模式的历史
模式不仅应用于软件领域,也应用于其他工程领域。模式可以简单地理解为针对某个重复问题的通用解决方案,这种描述可以应用于许多不同的领域。
模式的概念最早由一位名叫克里斯托弗·亚历山大的工程师在土木工程领域提出。在设计建筑物和城镇的过程中,他发现了许多反复出现的问题,并提出了一些通用的解决方案。他把自己的经验记录在《模式语言:城镇、建筑、施工》一书中。
值得注意的是,软件开发人员也采用了同样的想法:
- 埃里希·伽马
- 约翰·弗利斯赛德斯
- 拉尔夫·约翰逊
- 理查德·赫尔姆
1994年,他们撰写了第一本关于软件设计模式的书,名为《设计模式:可复用面向对象软件的元素》。本书介绍了23种解决面向对象设计各种问题的模式。由于书名过长,人们开始称之为“四人帮之书”,后来简称为“四人帮之书”。
我为什么要学习模式?
我个人认识很多开发人员,他们不懂任何模式,但工作却“勉强过得去”。很多开发人员都是这样。他们甚至可能在不知情的情况下就实现了某些模式。那么,学习这些所谓的“模式”有什么意义呢?
- 设计模式是解决常见问题的工具包。即使你永远不会遇到这样的问题,了解如何使用面向对象的设计原则来解决它们仍然大有裨益。
- 它为开发人员提供了一种通用语言。您可以直接跟同事说:“哦,用单例就行了”,大家都能理解。如果您已经了解单例模式,就无需解释它了。
设计模式的类型
模式可以根据其意图或目的进行分类。模式主要分为三类:
- 创建模式:帮助我们更好地创建/实例化对象,使其更加灵活并减少代码重复。
- 结构模式:帮助我们将对象组合成更大的实体,同时保持灵活性和效率。
- 行为模式:帮助我们进行对象之间的沟通,确保减少副作用。
结论
我希望读完这篇文章后,你能被说服去学习设计模式,或者至少去思考一下。接下来的几周,我会专门写一篇关于特定模式的文章,敬请期待。
与往常一样,如果您有任何问题,请随时在评论中留下,我会回复您。
文章来源:https://dev.to/tamerlan_dev/introduction-to-design-patterns-540o