初识设计模式
本文档是通过学习尚硅谷视频之后做出的笔记总结,可能还有其他的文章,感谢互联网上的宝贵资源!
一、概念
来自菜鸟教程:
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
简单而言,就是针对特定问题,有经验的前辈总结出的固定“套路”。
二、目的
在实际开发中,需要分工合作,项目往往结构复杂、功能多样。随着产品的更新迭代,需要添加新的功能、原有功能做改进。或因人员变动,项目由新人接手。
这时候,就需要项目易于扩展和维护,具有较好的开发规范,代码可读性高,否则,工作效率极低。
几个关键概念:
(1)代码重用性
实现相同功能时,代码可复用
(2)可读性
具有良好的开发规范,利于他人阅读和理解
(3)可扩展性
增加功能时,非常方便
(4)可靠性
增加新功能后,原有功能不受影响
设计模式不仅要关心具体功能的实现,也需要从整体软件层面出发,关注其系统和结构,做到良好的可伸缩性,并降低其复杂度。
以上这些做好后,最终使程序具有高内聚,低耦合的特性。
三、学习方向
设计模式并不局限于某种编程语言,重在理解其核心思路,然后融会贯通。
以Java为例,在框架中大量的使用了设计模式。在开发具体功能模块时,也可以借助设计模式灵活的解决问题。
经典书籍:
《Design Patterns: Elements of Reusable Object-Oriented Software》
由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著。这几位作者常被称为"四人组(Gang of Four)",简称Gof。
在本书中总结了23种设计模式。
注意:在实际编程中,设计模式远远不止这23种,只是这23种是目前比较经典的。毕竟问题多种多样,解决方案也是多种多样的,设计模式也在不断的推陈出新,毕竟我们的目的是高效的解决问题,而不是在现有的思路里打转。
四、设计模式分类
设计模式一般分为三种类型:创建型模式、结构型模式、行为型模式。
- 创建型模式:关注对象如何创建
- 结构型模式:在软件结构的层面上,如何做到有伸缩性和弹性
- 行为型模式:站在方法的角度上来考虑如何设计
创建型模式:
单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式
结构型模式:
适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
行为模式:
模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)