乐趣区

关于前端:设计模式专栏和8年游戏主程一起让糟糕的代码在潜移默化中升华

引言

大家好,我是亿元程序员,一位有着 8 年游戏行业教训的主程。

本系列是《和 8 年游戏主程一起学习设计模式》,让蹩脚的代码在耳濡目染中升华,欢送大家关注分享珍藏订阅。

问大家个问题:你写过蹩脚的代码吗?

对于这个问题,身边 80% 的敌人给出了必定的答案,还有几位敌人给蹩脚的代码加了个副词 –十分

笔者也不例外,回过头去看本人刚入门编程时的代码,堪称惨不忍睹。

在接下来的工夫里,和笔者一起学习在编程开发中的设计模式,一起在耳濡目染中晋升本人的代码能力。

1. 设计模式是什么?

在编程的微妙世界中,有一种智慧之光始终在为咱们照亮前行的途程,那就是——设计模式

设计模式是软件设计中常见问题的典型解决方案,就像在建造一座雄伟修建之前,有一份精心设计的蓝图。

2. 设计模式与算法的区别

首先,让咱们明确一个重要的区别:设计模式与算法不同。算法是一组明确定义的步骤,用于 解决 特定的计算问题。而设计模式更像是一种高级形象,是解决一般性设计问题的 方法论

举个例子,排序算法是一个明确的步骤序列,而单例模式是一种通用的解决方案,用于确保一个类只有一个实例。

3. 设计模式的形成

设计模式通常包含以下因素:

  1. 用意(Intent):简要形容问题和解决方案的指标。
  2. 动机(Motivation):深刻解释问题并阐明为什么须要该模式以及如何提供解决方案。
  3. 构造(Structure):展现模式的组成部分和它们之间的关系,通常用 UML 类图来示意。
  4. 实现(Implementation):提供如何在代码中实现该模式的理论领导,并通常包含示例代码。
  5. 适用性(Applicability):阐明在哪些状况下应用该模式最为无效。
  6. 相干模式(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: 笔者线上的小游戏《贪吃蛇掌机经典》《填色之旅》《重力迷宫球》大家能够自行点击搜寻体验。

实不相瞒,想要个 在看 !请把该文章 分享 给你感觉有须要的其余小伙伴。谢谢!

退出移动版