freeCodeCamp/guide/chinese/software-engineering/design-patterns/index.md

47 lines
2.8 KiB
Markdown
Raw Normal View History

---
title: Design Patterns
localeTitle: 设计模式
---
## 设计模式
程序员和软件架构师使用设计模式来解决软件架构中**常见的,反复出现的问题** 。这些模式为**面向对象编程**提供了一种与语言无关的方法,可帮助开发人员遵循良好应用程序设计的原则。
### 为什么设计模式?
按设计模式开发具有以下几个优点:
* 遵循良好的编程原则(如**[SOLID](https://www.youtube.com/watch?v=XzdhzyAukMM) [原则)](https://medium.com/@cramirez92/s-o-l-i-d-the-first-5-priciples-of-object-oriented-design-with-javascript-790f6ac9b9fa)**更容易**。**
* 它使代码块更小,因此代码更容易**测试**和**调试**
* 它有助于保持代码松散耦合,因此代码更易于**重新使用**和**更新**新应用程序
* 它使代码更容易**理解** ,因此新的贡献者可以**迅速提升**
使用设计模式需要进行一些权衡,开发新手的开发人员应该记住以下内容:
* 编程中**没有银子弹** ,设计模式也不例外
* 设计模式为代码添加了**一层抽象** ,增加了初始设计和开发工作
* 过度使用设计模式或强制它们适合使代码**更难**理解
### 语言支持
设计模式源于静态类型语言的世界如C ++Java和C。关于按设计模式进行开发的大多数资源都基于这些语言之一。
尽管如此,设计模式只是:模式。它们**不是**类或接口之类的实现,并且**不受任何一种语言的约束** 。
在动态语言中学习设计模式时,如果特定模式看起来不必要复杂或反直觉,请回想起它们的起源。动态语言的开发人员仍然可以使用以下设计模式并从中受益,尽管可能需要更多的研究才能完全理解它们。
### 用途
设计模式非常适合以简单且可重复的方式解决基础编码问题。从广义上讲,它们分为三类:
* **创建**模式描述了如何创建新对象
* **结构**模式描述了如何从其他对象中组合对象
* **行为**模式描述了对象如何相互通信
这些任务都可以在没有设计模式的情况下执行,但设计模式可以**降低**您违反良好实践并创建难以维护的代码**的风险** 。
#### 更多信息:
* Kamran Ahmed的[“人类设计模式”](https://github.com/kamranahmedse/design-patterns-for-humans)是对特定模式的精彩介绍
* [设计模式](https://en.wikipedia.org/wiki/Design_Patterns)是开始这种实践的书
* Martin Fowler的[企业应用程序架构模式为企业应用程序](https://martinfowler.com/eaaCatalog/)提供了一套更复杂的模式
* Sourcemaking提供[在线资源,](https://sourcemaking.com/design_patterns)其中包含有关设计模式的其他示例和信息