接口隔离原则
定义: 是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
解读: 其实这个定义比较有意思,我理解出以下几点:
- 适度
- 解耦
以上两点怎么说呢?
首先,适度这个词并不意味着我们每一个操作数据库的Dao/Mapper操作数据库都要建立一个接口,我们知道实际上的对应条件为: DAO—数据库的一张单表,在原则上面就与现在的主流相违背!接口隔离原则让我们去用多个单一的接口,而不是总的接口,它这样子说,其实是按照Java的设计思想来的,子父类单继承,接口多实现这样一个理念,但是在开发过程中,我们很少有去遵守这个接口隔离原则,因为那样子无形中会增加工作负担,约定 > 配置 > 编码这一点当你有了工作经验之后就会明白
解耦就不说了,当你抽出接口的时候就意味着解耦了。
下面我们举个简单的例子
前提条件: 我们都知道高中要分文理科
文科: 语数外史地政
理科: 语数外物化生
有以下分解方式:
第一种: 抽离接口语数外史地政物化生共9个接口,这种完全符合接口隔离原则,文科生去实现语数外史地政,理科生去实现语数外物化生但是感觉有点烦,讲道理的说。
第二种: 既遵守接口隔离原则,又能较为完美的划分,首先他们是高中生,那么就需要学习语数外,其次他们在分文理科,文科就史地政,理科就物化生共计三个接口
a. 语数外
b. 史地政
c. 物化生
后续的变化: 当有新的学科出现比如说python,要分析这个接口属于公有学科语数外这种都要学习的,还是分文理科,之后我们可以利用接口的多继承原则进行拓展。记住不要去随意修改已经写好的接口,要进行拓展! 除非你有十足的把握,不然给别人的代码碰坏了你就哭吧!