什么是设计模式
设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。
设计模式与方法或库的使用方式不同,你很难直接在自己的程序中套用某个设计模式。模式并不是一段特定的代码,而是解决特定问题的一般性概念。你可以根据模式来实现符合自己程序实际所需的解决方案。
人们常常会混淆模式和算法,因为两者在概念上都是已知特定问题的典型解决方案。但算法总是明确定义达成特定目标所需的一系列步骤,而模式则是对解决方案的更高层次描述。同一模式在两个不同程序中的实现代码可能会不一样。
算法更像是菜谱:提供达成目标的明确步骤。而模式更像是蓝图:你可以看到最终的结果和模式的功能,但需要自己确定实现步骤。
模式包含哪些内容?
大部分模式的描述都会遵循特定的形式,以便在不同情况下使用。模式的描述通常会包括以下部分:
• 意图部分简要地描述问题和解决方案。
• 动机部分进一步解释问题并说明模式会如何提供解决方案。
• 结构部分展示模式的各个部分和它们之间的关系。
• 在不同语言中的实现提供流行编程语言的代码,让读者更好地理解模式背后的思想。
部分模式介绍中还列出了其他的一些实用细节,例如模式的适用性、实现步骤以及与其他模式的关系。
模式的分类
不同设计模式在其复杂程度、细节层次以及在整个系统中的应用范围等方面各不相同。我喜欢将其比作道路的建造:如果你希望让十字路口更加安全,那么可以安装一些交通信号灯,或者修建有行人地下通道的多层互通式立交桥。最基础的、底层的模式通常被称为惯用技巧。这类模式一般只能在一种编程语言中使用。最通用的、高层的模式是架构模式。开发者可以在任何编程语言中使用这类模式。与其他模式不同,它们可用于整个应用程序的架构设计。此外,所有模式可以根据其意图或目的来分类。其中可以将设计模式分为三种主要模式类别:
• 创建型模式提供创建对象的机制,增加已有代码的灵活性和可复用性。
• 结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。
• 行为模式负责对象间的高效沟通和职责委派。
总结
以上内容都参考《深入设计模式》里的设计模式简介,下面我用自己的话来总结一下,并且在往后的设计模式介绍当中我都会以自己的话结合书中内容去给大家讲述各种设计模式,设计模式就是对我们代码进行复用的各种方式,并不只是单纯的封装成一个类,他可能是一个大类去管理一群小的类,而且这些大类和小类之间也不一定是继承,也可能是组合,好比说“汽车是交通工具”这是继承的关系,汽车就是交通工具的一种,但“汽车里有一个引擎”是一种组合关系,汽车里有一个汽车的引擎,但飞机里也有飞机的引擎,他们是一个组合的关系,将其中的关系理清应用到代码上,并对其意图和动机进行说明,就是设计模式。