面向对象六大原则解析
面向对象六大原则:
在面向对象编程时有六大原则:
l 单一职责原则
l 里氏替换原则
l 依赖倒置原则
l 开闭原则
l 接口隔离原则
l 迪米特原则
在java中与其说是面向对象编程,不如说是面向接口编程,或是面向抽象类编程。在这个思想下我们进入总结
单一职责原则:
也就是在设计接口或是类时里面的函数最好是高度相关的。不要想着把所有旁支末节都引入进来。
Eg:
Class 人{
属性:头、手、身体、脚
方法:吃、喝、拉、撒、睡
}
人的这个类有主要的东西就好了。至于例如(挣钱、花钱)、(休息、娱乐)等我们就可以封装为接口,在需要的时候进行引用。
优点:
l 降低了类的复杂度,明确了对应的职责
l 可读性和维护性变高
l 如果接口单一职责做得好,修改接口影响的仅仅是相应的实现类
里氏替换原则:
这个原则通俗解释就是父类可以用的地方子类一定可以用。
这个原则的存在实际上是为了规范复习父类方法的子类。也就是说子类你修改父类的方法是没问题的,但是在修改的时候希望你不要脱离父类这个方法的本质,在返回输出的时候按照套路出牌。
优点:
总感觉只要是面向对象这个原则是默认遵守的
依赖倒置原则:
实现类实现了抽象类的细节,但是实现类之间的依赖依然要倒置给抽象类。它的表现是依赖类中持有的是需要的抽象对象或者需要的接口类。
这里比较能够体现面向接口编程的思想。
Eg:
Class 先生 extends 人 implements (挣钱、花钱){
……..
}
class 太太 extends 人{
(挣钱花钱) 先生;
方法:
买东西{
先生.花钱
}
}
太太里面需要用到先生(花钱、挣钱)则只需要去持有对应的接口就行了。太太对先生的依赖倒置给了(花钱、挣钱)接口。
开闭原则:
这个java设计原则的基础:对扩展开放,对修改封闭。
也就是说在遵守单一原则的情形下定义好了一个核心类。核心类的核心方法我们就不能再去修改了,如果要添加其他功能就添加对应的接口就好了
优点:
l 增加稳定性
l 可扩展性高
接口隔离原则:
一个类对另外一个类的依赖应该建立在最小的接口上。当一个接口功能太多太大时,我们最好将其分割为小接口。在其他类引入依赖时,使用对应的接口就好了。
也就是利用小接口明晰引入对象的具体功能。
优点:
l 降低耦合性
l 提升代码可读性
l 影藏实现细节
迪米特原则:
也就是一个类对其他类知道的越少越好。如何更少地知道其他类呢?!这个就是接口隔离原则和单一职责原则。
如果类与类之间关系越密切,那么他们的耦合度就越大当一个类发生变化时对另外一个类的影响也就越大。
优点:
降低耦合度
增加稳定性。
总结:
所以可以看出前辈们给定我们这些原则,实际上是为了1、降低耦合度;2、提高稳定性;3、增加可读和可维护性;4、提高扩展性
同时我们发现,上面的6个原则的根本就是让我们尽量在定义好核心类之后用相应的接口去实现核心类的其他方法,在引入时尽量引入接口。
所以面向对象变成的精髓就是面向接口编程