第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

再談內(nèi)聚耦合——接口隔離原則

接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

接口隔离原则的定义可以翻译为:一个类所包含的应该就是他需要包含的。
如我们定义了一个Person类,他具有人都有的行为:speak()。
图片描述
此时因为考虑到有的人会拳击,为了让这个类更加“丰富”。于是新增了一个box()接口。
图片描述

  • 首先box并不属于人这个共性抽象类的职责
  • 其次一旦新增了box()接口,意味着依赖Person的类变多。如现在有十个类,其中五个需要调用speak()接口,五个需要调用box()接口,在原来的设计中,只有五个类依赖于Person类,由于新增了box接口,这个数量增加到了十个。同时也就意味着,Person类的变动影响的范围变大。

回过头我们来看定义:
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
这个就相对好理解了,本来我调用Person类只能访问到speak方法,新增box接口后意味着我对box方法也有了访问权限。


很多地方将单一职责和接口隔离原则认为是相似的原则,我觉得如果要区分的话可以从如下角度去区分。
单一职责是对接口隔离的进一步划分,他将可以独立变化的职责区分开。单一职责在架构设计中更常用,接口隔离在日常开发中更常用。

先说接口隔离到单一职责的过程

假设系统中有任务模块和会议模块。各自都有增删改查功能。会议中可能要发布任务对任务进行一些操作。
图片描述
按照接口隔离原则,应该将任务类和会议类区分开。
为什么之前说接口隔离日常用的多呢,因为在日常开发中经常为了图省事自己在某个类中定义一个字符串处理接口或者日期处理接口,方便自己开发过程中复用,但是这些都是不应该对外public的接口
图片描述
下面进一步就是利用单一职责的进行进一步细分。
现在任务模块包含了四个功能,但是这个类同时也包含了任务的实体类,控制器部分,业务部分和持久化部分,大家看到这里就很明白了,虽然都是对任务的操作都属于任务处理的范围,但是我们会按照上述四个维度将他分为四个类。如果真的都拧在一个类里,显然会乱了套了。

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消