设计模式六大原则(原创)
#####本文意义 六大原则是理解是透彻理解23种设计模式核心,要定义清晰才能理解精准、简单更能实战
#####SOLID原则 Bob大叔(Robert C Martin)把 单一职责,开闭原则,里氏替换、接口隔离,及依赖倒置5个原则定义为SOLID原则
一句话速记: S(Single==单身) O(Open 开放==开发)L(里氏==是)I(接口==借口)D(倒置==导致) SOD(最少知道)
单身开发是借口导致,只与直接朋友通信
#####六大原则的目标
高内聚,低耦合
#####六大原则理解关键词 关键词:
抽象(面向接口),单一职责,最小化
理解: 1、 高层模块不应依赖底层模块,两者都应依赖抽象 2、 类的职责单一,通用性越强 3、 最小化说明接口尽量小,类间彼此知道尽量小
单一职责原则(SRP)
定义:就一个类而言,应该仅有一个引起它变化的原因 一句话理解:一个类,只做一件事 判断方法:一个对象逻辑关系,是"has-a",还是“is-a”
开闭原则(OCP)
定义:软件实体应该对扩展开放,对修改关闭 一句话理解:遵循开闭原则重要手段是通过抽象 使用方式: 1、抽象约束 2、参数配置控制行为模式 3、指定项目章程,约定优于配置 4、封装变化
里氏替换原则(LSP)
定义:所有引用基类地方必须透明地使用子类对象 一句话理解:子类无影响替换父类,用父类对象定义,运行时用子类替换 说明:里氏替换依赖继承,多态两大特性,核心原理是抽象 抽象优点: 1、代码公共逻辑重用 2、子类继承基础上,还可以增加差异 3、提高代码的扩展性 缺点: 1、继承是侵入性的 2、子类灵活性降低 #####接口隔离原则(ISP) 定义:类间依赖关系应建立在最小接口上 一句话理解:接口的单一职责 使用方式: 1、接口尽量小 2、接口高内聚 3、定制服务 4、接口设计有限度的
#####依赖倒置原则(DIP) 定义: 1、高层模块不应依赖底层模块,两者都应依赖抽象 2、抽象不应该依赖细节,细节应该依赖抽象
说明:模块间依赖通过抽象发生,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者抽象类产生
一句话理解:面向接口编程 使用方式: 1、核心类尽量有接口和抽象类 2、变量数据类型建议是接口或抽象类 3、任何类都不应该从具体类派生
依赖三种方式 1、构造函数传递依赖 2、setter方法传递 3、接口声明依赖对象 (接口注入)
迪米特原则(LOD)
定义:一个对象应该对其他对象有最少了解 说明:只与直接朋友通信 一句话理解:访问对方,又要减少耦合
实现方式: 1、访问权限控制,最少暴露外界接口实现 2、避免与非直接类通讯,用“中介”这种方式 3、多用组合,少用继承
#####参考 《Android源码设计模式解析与实战》 《Android开发进阶从小工到专家》第10章 《设计模式之禅》第一部分