面向对象六大原则——《Android源码设计模式解析与实践》读书笔记1

1.单一职责原则

一个类中应该是一组相关性很高的方法、数据和封装。明显不一样的功能就不应该放在一个类中。方法、接口等同理。

>>开始适应时可以先对要实现的内容用UML图整理一下,根据UML图来进行解耦、拆分。


2.开闭原则

软件中的对象应该对于扩展是开放的,对于修改是封闭的。

当软件/应用需要修改/变化时,应该尽量通过扩展的方式来实现变化,而不是通过修改已有的代码来实现。

>>通过抽象类、接口等来实现扩展的部分。


3.里氏替换原则

简单定义:所有引用基类的地方都必须能透明地使用其子类的对象。

开闭原则和里氏替换原则往往一起体现。


4.依赖倒置原则

关键点:

(1)高层模块不应该依赖低层模块,两者都应该依赖其抽象

(2)抽象不应该依赖细节

(3)细节应该依赖抽象

抽象:指抽象类、接口等不能直接被实例化的对象

细节:实现类,即可以直接被实例化的对象。

低层模块:具体实现类

高层模块:调用端

实际上,低层模块和高层模块都是抽象的实例


5.接口隔离原则

客户端不应该依赖它不需要的接口,即类间的依赖关系应该建立在最小的接口上。


6.迪米特原则/最少知识原则

一个对象应该对其他对象有最少的了解,即调用者或依赖者只需要知道它需要的方法即可。


【个人思考】

陈述1:

继承的缺点:继承是侵入性的,只要继承就必须拥有父类的所有属性和方法,因此可能造成子类代码冗余、灵活性降低。

推论1:

在不清楚该用接口还是用扩展类来实现的时候,可以从这个方面考虑:如果同类的扩展的功能需要依赖父类的地方较多,则用子类的方法实现;反之则用不同的类implements同一个接口来实现。


——2017.7.27

你可能感兴趣的:(面向对象六大原则——《Android源码设计模式解析与实践》读书笔记1)