设计模式
设计模式并没有想象中的高大上,在你平日的开发和使用中,也一定有使用到过
什么是设计模式?
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
你可以理解为,遇到某一种问题,设计模式帮助我们提供了一种解决方案,我们通过学习设计模式可以简化其中的解决过程。
没有设计模式之前:
遇到问题 -> 分析问题 -> 设计解决方案/不知道如何设计 -> 实现方案/放弃 -> 发现方案不足/方案设计完善-> 问题未得到完全解决/问题解决
有了设计模式:
遇到问题 -> 分析问题 -> 发现符合某一种设计模式的场景 -> 问题解决
可以看出来,问题的解决并非是一帆风顺的,很多时候就好像建造大楼的工程,如果你手里面只有泥瓦匠,你可能只能造出来一个小厕所,但是摩天大楼就无法办到了。
而设计模式就是在以往的盖楼房过程中遇到的经验总结,可以帮助我们快速的套用这些模式,来解决盖高楼的问题。
为什么要使用设计模式?
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样
注意:
- 设计模式是在我们常见的开发中灵活使用的,并非什么高大上的存在,也不是必须的存在。
- java开发者请注意,JDK提供的API、spring、java的规范、已经贴心的 实现了很多开发中常用的设计模式。所以你在学习中可能会产生一种设计这个模式
的人是智障么?(我本来就是这么用的/这么简单的事情还要条条框框的束缚/这设计模式也太low了)之类的感觉。但是请注意:设计模式并非人为设计出来,
而是在以往的工作经验中总结出来的解决问题的方案,离开了问题,设计模式也只剩下装逼
二字。
设计模式
分类总计有三大类 共计23种设计模式
1. 第一类 创建类型
a. 本质:创建对象的模式,对类的实例化进行抽象
b. 特点:
i. 封装了具体类的信息
ii. 隐藏了类的实例化的过程
c. 5种设计模式
i. 单例模式 singleton
ii. 工厂方法模式 factory Method
iii. 抽象工厂模式 abstract Factory
iv. 建造者模式 bulder
v. 原型模式(原始模式) prototype
2. 第二类 结构类型
a. 本质: 处理类或者对象的组合
b. 两种类型:
i. 类结构类型: 采用继承机制来组合接口实现
ii. 对象结构类型 组合对象的方式来实现新功能
c. 7种设计模式
i. 适配器模式 adapter
ii. 桥梁模式 bridge
iii. 装饰模式 decorator
iv. 门面模式 facade
v. 合成模式 composite
vi. 享元模式 flyweight
vii. 代理模式 proxy
3. 第三类 行为类型
a. 本质: 对在不同的对象之间划分责任和算法的抽象化
b. 两种类型:
i. 类的行为模式 使用继承关系在几个类之间分配行为
ii. 对象的行为模式 使用对象聚合的方式来分配行为
c. 11种 设计模式
i. 模板方法模式 template method
ii. 迭代器模式 iterator
iii. 命令模式 command
iv. 观察者模式 Observer
v. 调停者模式 mediator
vi. 状态模式 state
vii. 策略模式 strategy
viii. 责任链模式 chain of responsibilty
ix. 访问者模式 visitor
x. 备忘录模式 memento
xi. 解释器模式 interpreter