前言
已经很久没有写博客了,今天开始继续学习Android的23种设计模式,首先在学习设计模式之前我们得先了解设计模式的六大基本原则——单一SRP(单一指责原则)、OCP(开闭原则)、LSP(里氏替换原则)、DIP(依赖倒置原则)、ISP(接口隔离原则)、LOD(迪米特原则)。
1、单一职责原则
单一职责原则的英文名称是Single Responsibility Principle,缩写是SRP。单一职责原则的定义顾名思义就是:“就一个类而言,引起它变化的原因只有一个。” 通俗的说就是‘一个类只负责做一件事’。这个“单一”的划分界限并不是说那么明显,但是,如果是两个完全不一样的功能就不能放在同一个类之中。
2、开闭原则
开闭原则的英文名称是Open Close Principle,缩写是OCP。开闭原则的定义是:“软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。”我的理解是提倡我们实现继承,已经存在的实现类关闭修改,不让我们去修改,但是新的类我们可以通过继承重写父类的接口来修改。这个原则可以使我们的项目更加稳定并且灵活。当我们的软件需要更新升级时,我们尽量通过扩展的方式来实现变化,而不是修改原有的代码,否则很容易在原有的代码中引入新的bug。
3、里氏替换原则
里氏替换原则的英文名称是Liskov Substitution Principle,缩写是LSP。里氏替换原则说白了就是“抽象”。它的定义是:所有使用基类的地方都必须能透明地使用其子类的对象。也就是说,所有父类出现的地方都可以用其子类来替换,并且不能产生任何的异常和错误。
我们可以发现开闭原则和里氏替换原则的核心都是抽象,抽象依赖于继承所以说,这两个原则的核心还是继承。继承是OOP(Object Oriented Programming,面向对象编程)的三大基本特点(继承,多态,封装)之一。在OOP中继承的优缺点比较明显,优点当然是代码的可扩展性高,缺点就是所有子类必须拥有父类的属性和方法,这就会造成代码冗余,灵活性降低。
4、依赖倒置原则
依赖倒置原则的英文全称是 Dependence Inversion Principle,缩写是DIP。依赖倒置原则指代了一种特定的解耦形式,使得高层次的模块不依赖于低层次的模块实现的细节的目的,依赖模块被颠倒了。
依赖倒置原则的几个关键点:
(1)高层次模块不应该依赖于低层次的模块,两者都应该依赖齐抽象。
(2)抽象不应该依赖细节
(3)细节应该依赖抽象。
感觉怎么说都有点枯燥难懂,在Java语言中的表现就是:“模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象产生的”。
5、接口隔离原则
接口隔离原则的英文全称是 Interface Segregation Principles,缩写是ISP。ISP的定义有两种:
1、客户端不应该依赖他不需要的接口
2、类间的依赖应该建立在最小的接口上。
接口隔离原则的目的是系统解开耦合,从而容易重构、更改和重新部署。也就是说让客户端的接口经可能的小。
6、迪米特原则
迪米特原则的英文全称是 Law of Demeter,缩写是LOD,也称为最少知识原则(Least Knowledge Principle),定义是: 一个对象应该对其他对象有最少的了解。通俗得讲,一个类应该对自己需要耦合或调用的类知道得最少,类的内部如何实现与调用者或依赖者没关系,调用者或依赖者只需要知道自己需要调用的方法即可,其他可一概不管。
总结
读完这一章显然感觉这一章的六大原则的核心都是“抽象”,第一次认识到抽象在代码编写中的重要性。