引言
大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
问大家个问题: 你写过糟糕的代码吗?
关于这个问题,身边80%的朋友给出了肯定的答案,还有几位朋友给糟糕的代码加了个副词--非常。
笔者也不例外,回过头去看自己刚入门编程时的代码,可谓惨不忍睹。
在接下来的时间里,和笔者一起学习在编程开发中的设计模式,一起在潜移默化中提升自己的代码能力。
1.设计模式是什么?
在编程的奇妙世界中,有一种智慧之光一直在为我们照亮前行的路程,那就是——设计模式。
设计模式是软件设计中常见问题的典型解决方案,就像在建造一座宏伟建筑之前,有一份精心设计的蓝图。
2.设计模式与算法的区别
首先,让我们明确一个重要的区别:设计模式与算法不同。算法是一组明确定义的步骤,用于解决特定的计算问题。而设计模式更像是一种高级抽象,是解决一般性设计问题的方法论。
举个例子,排序算法是一个明确的步骤序列,而单例模式是一种通用的解决方案,用于确保一个类只有一个实例。
3.设计模式的构成
设计模式通常包括以下要素:
- 意图(Intent):简要描述问题和解决方案的目标。
- 动机(Motivation):深入解释问题并说明为什么需要该模式以及如何提供解决方案。
- 结构(Structure):展示模式的组成部分和它们之间的关系,通常用 UML 类图来表示。
- 实现(Implementation):提供如何在代码中实现该模式的实际指导,并通常包括示例代码。
- 适用性(Applicability):说明在哪些情况下使用该模式最为有效。
- 相关模式(Related Patterns):列出与该模式相关的其他设计模式,以帮助开发人员更好地理解和选择适当的模式。
4.设计模式的起源
设计模式并非突然出现,它们是经过实际应用中反复验证的。最早的设计模式概念可以追溯到建筑领域,由克里斯托佛·亚历山大在《建筑模式语言》中首次提出。在这本书中,他描述了城市设计的“语言”,而模式是其基本构成单元,如窗户的高度、建筑的层数等。
但将设计模式引入程序开发领域的功臣是埃里希·伽玛、约翰·弗利赛德斯、拉尔夫·约翰逊和理查德·赫尔姆,他们于1994年合著了《设计模式:可复用面向对象软件的基础》,这本书定义了23种模式,成为了设计模式的标志性之作。
5.学习设计模式的价值
为什么要学习设计模式呢?即使你已经在编程领域摸爬滚打多年,了解设计模式仍然是一项重要任务。设计模式提供了解决各种设计挑战的通用方法。它们是工具箱中的强大工具,帮助你更高效地应对问题,提高代码质量,减少错误,加速开发进程。
此外,设计模式还定义了一种通用的编程语言,使你能够与其他开发人员更轻松地沟通。不再需要长篇大论地解释你的设计思路,只需提到模式名称,大家都能明白你的意图。
6.设计模式的争议
当然,设计模式也不是完美无缺的。它们在编程语言不足以支持某些抽象功能的情况下才会被使用,这有时被批评为“为不完善的编程语言提供蹩脚解决方案”。此外,有些人可能过度使用设计模式,将其套用到不适合的地方,这可能导致过于复杂的代码。
7.设计模式的分类
设计模式可以分为不同的类别,包括创建型模式、结构型模式和行为型模式。每个类别都解决不同层次的问题,从创建对象到管理对象关系再到定义对象的行为。
创建型模式
1.工厂方法模式
2.抽象工厂模式
3.生成器模式
4.原型模式
5.单例模式
结构型模式
1.适配器模式
2.桥接模式
3.组合模式
4.装饰模式
5.外观模式
6.享元模式
7.代理模式
行为型模式
1.责任链模式
2.命令模式
3.迭代器模式
4.中介者模式
5.备忘录模式
6.观察者模式
7.状态模式
8.策略模式
9.模板方法模式
10.访问者模式
结语
在未来的文章中,我们将深入研究各种设计模式,为你提供更多的示例和指南,以便更好地理解和应用它们。
在设计模式的引导下,让我们一起探索编程世界的无限可能吧!
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!