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

47 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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)其中包含有关设计模式的其他示例和信息