设计模式六大原则(原创)

本文意义

六大原则是理解是透彻理解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章
《设计模式之禅》第一部分

你可能感兴趣的:(设计模式六大原则(原创))