系列文章目录
设计模式概述 创建型模式-单例模式 创建型模式-原型模式 创建型模式-建造者模式
设计模式是什么?
设计模式是软件设计中常见问题的典型解决方案, 可用于解决代码中反复出现的设计问题。模式并不是一段特定的代码, 而是解决特定问题的一般性概念。 这个跟算法是很不一样的,虽然都是已知的特定问题的典型解决方案,但算法总是明确定义达成特定目标所需的一系列步骤,模式则是对解决方案的更高层次的描述。
设计模式的历史
模式的概念是由一名建筑师,克里斯托佛·亚历山大,在其著作 《建筑模式语言》 中首次提出的,因此这个人有个“昵称”——模式之父(the father of patterns)。 此后,又由埃里希·伽玛、 约翰·弗利赛德斯、 拉尔夫·约翰逊和理查德·赫尔姆这四位作者将设计模式的概念应用到程序开发领域中,于1994 年出版了 《设计模式: 可复用面向对象软件的基础》 一书,现在一般被人们简称为“GOF(Gang of Four,四人帮)的书”。
设计模式的作用
不管你是否了解这23个设计模式,如果你从事程序开发多年,就算你不专门学习设计模式,也可能在不自知的情况下,已经使用过了其中某些模式了。
设计模式是针对软件设计中常见问题的工具箱,能指导你如何使用面向对象的设计原则来解决各种问题。 设计模式定义了一种让你和你的团队成员能够更高效沟通的通用语言。
设计模式的争议
设计模式也存在着不少争议。
所选编程语言或技术缺少必要的抽象功能时, 人们才需要设计模式。 教条式的使用设计模式,而不根据实际情况加以调整。 为了使用模式而使用模式,有时候简单的代码就能解决的问题就无需利用设计模式把问题复杂化。 但是在我看来,第2、3点是使用者的问题,与“工具”无关,设计模式还是值得我们每一个程序开发者学习的。刘伟老师在《设计模式的艺术》一书中,说了这样一个观点:“不会在开发中灵活运用一个模式基本上等于没学。所以一定要做到:少说多做。“,所以学习理论只是第一步,学会恰当的、灵活的应用各种设计模式来解决问题才是最重要的。
设计模式的分类
所有模式可以根据其意图或目的来分类。
创建型模式:提供创建对象的机制, 增加已有代码的灵活性和可复用性。 结构型模式:介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。 行为模式:负责对象间的高效沟通和职责委派。
参考资料
《设计模式的艺术》作者:刘伟 网站:https://refactoringguru.cn/design-patterns