一、简介
设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。目的是为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。
下图为常用的23中设计模式,整个系列参考《Head First 设计模式》,加深印象,方便查阅。
因此博客中会引入书中的一些一些案例。
范围 | 创建型模式 | 结构型模式 | 行为型模式 |
---|---|---|---|
类模式 | 工厂方法 | (类)适配器 | 模板方法、解释器 |
对象模式 | 单例 原型 抽象工厂 建造者 | 代理 (对象)适配器 桥接 装饰 外观 享元 组合 | 策略 命令 职责链 状态 观察者 中介者 迭代器 访问者 备忘录 |

二、设计模式的六大原则
总原则:开闭原则
基本概念:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。
理解:举个例子,一款小说阅读器伴随着很多的翻页动画,但为了应对后期可能会增加新的翻页动画的情况,因此可以通过抽象类为翻页动画,由不同的子类去实现翻页逻辑,达到实现翻页动画的目的。因此简单的理解就是通过接口或者抽象类为定义一个抽象层,而将相同的可变因素封装在相同的具体实现类中。
1、单一职责原则
基本概念:单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分
2、里氏替换原则
基本概念:里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的原理。里氏替换原是继承复用的基础,它反映了基类与子类之间的关系,是对开闭原则的补充,是对实现抽象化的具体步骤的规范。子类可以扩展父类的功能,但不能改变父类原有的功能。
3、依赖倒转原则
基本概念:这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互,达到降低客户与实现模块之间的耦合。
理解:使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给它们的实现类去完成。
4、接口隔离原则
基本概念:这个原则的意思是:每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。
5、迪米特法则
基本概念:一个类对自己依赖的类知道的越少越好。也就是说无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。
6、合成复用原则
基本概念:要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
理解:举个例子理解,电脑分为笔记本、台式机,笔记本有各种颜色,台式机也有各种颜色,在面向对象设计时,我们通常会按这个顺序理解,但为达到服用,我们可以将颜色与电脑绑定即可。
三、设计原则:
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 多用组合,少用继承。
- 为了交互之间松耦合设计而努力。
- 类用该对扩展开发,对修改关闭。
- 要依赖抽象,不要依赖具体类。
四、设计模式:
下面对这些部分常用设计模式具体学习,目录:
设计模式(二)策略模式
设计模式(三)观察者模式
设计模式(四)装饰模式
设计模式(五)工厂模式
设计模式(六)单件模式
设计模式(七)适配器模式
设计模式(八)代理模式
设计模式(九)建造者模式
计划:
设计模式暂时记录到这里,后面会计划结合源码深入学习
网友评论