点击上方亿元程序员+关注和★星标
引言
大家好,我是亿元程序员,一位有着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:笔者线上的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
点击下方绿色按钮+关注