面向对象6大原则

1 单一职责原则

一个类的职责尽量单一,不要都写到一起,太臃肿,面向对象最基本的原则

2 开闭原则

一个类,对于修改是封闭的,对于扩展是开放的,这是面向对象最重要的原则。频繁的修改一个类,也很容易出问题,通过扩展,不影响原有的功能,当然,完全不修改一个类是不可能的,但是我们一开始就应该多去考虑整个类的功能

3 里氏替换原则

理解一:子类可以实现父类的抽象方法,但是不可以实现非抽象方法,父类的非抽象方法一般都是设计好了的,重写非抽象方法,会破坏整个继承体系

理解二:将一个父类对象,替换成子类对象,程序不会发生错误和异常

4 依赖倒置原则

定义:高层不依赖底层具体实现,而依赖其抽象

举例1:RecyclerView中的的addItemDecoration,参数为ItemDecoration抽象类,实际使用的时候自己传入实现类

1
2
3
4
5
public void addItemDecoration(@NonNull ItemDecoration decor) {
addItemDecoration(decor, -1);
}
//抽象类
public abstract static class ItemDecoration{}

举例2:RecyclerView的setAdapter ,参数为Adapter,也是抽象类

1
2
3
4
public void setAdapter(@Nullable Adapter adapter) {
//...
requestLayout();
}

从以上两个例子中可以看出,recyclerview依赖于抽象,而不是实现

5 接口隔离原则

客户端不应该依赖它不需要的接口,即接口粒度尽量小,不应该强迫客户端被迫实现一些不会用的接口,过于臃肿的设计师对接口的污染。当修改一个接口方法时,被它实现的子类,可能都需要进行修改

所以,当你想往接口里面新增方法时,扪心自问,是不是需要为调用者创造一个特定的接口。

https://www.jianshu.com/p/1ef2893749d4

6 迪米特原则

也叫做最少知识原则,迪米特原则遵循编程原则 :高内聚,低耦合。 只有使各个模块之间的耦合尽量的低,才能提高代码的复用率

Only talk to your immediate friends 只与直接的朋友通信

通俗理解:一个类,对其他类的了解应该越少越好,具体理解参考秦子帅的体育老师,体育委员,女生的案例

https://blog.csdn.net/qq_34908107/article/details/78068864