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