[設(shè)計原則]接口隔離原則

接口分為兩種:

  • 實例接口(Object Interface)雹锣,在Java中聲明一個類愧怜,然后用new關(guān)鍵詞產(chǎn)生一個實例盲链,它是對一個類型的事物的描述拙毫,這是一種接口依许,比如你定義Person這個類,然后使用Person zhangSan = new Person()產(chǎn)生了一個實例缀蹄,這個實例要遵從的標準就是Person這個類峭跳,Person類就是zhangSan的接口,類也是一種接口缺前。
  • 類接口(Class Interface)蛀醉,Java中經(jīng)常使用 interface關(guān)鍵詞字義的接口。

接口隔離原則(ISP)的定義:

  • 客戶端不應(yīng)該依賴它不需要的接口衅码。
  • 類間的依賴關(guān)系應(yīng)該建立在最小的接口上拯刁。

建立單一接口,不要建立臃腫龐大的接口逝段。接口盡量細化垛玻,同時接口中的方法盡量少。

接口隔離原則是對接口進行規(guī)范約束奶躯,其包含以下4層含義:

  • 接口要盡量小
    根據(jù)接口隔離原則拆分接口時帚桩,首先必須滿足單一職責原則。
  • 接口要高內(nèi)聚
    高內(nèi)聚就是提高接口巫糙、類、模塊的處理能力颊乘,減少對外的交互参淹。要求在接口中盡量少公布public方法,接口是對外的承諾乏悄,承諾越少對系統(tǒng)的開發(fā)越有利浙值,變更的風(fēng)險也就越少,同時也有利于降低成本檩小。
  • 定制服務(wù)
    一個系統(tǒng)或系統(tǒng)內(nèi)的模塊之間必然會有耦合开呐,有耦合就要有相互訪問的接口(并不一定就是Java中定義的Interface,也可能是一個類或單純的數(shù)據(jù)交換),我們設(shè)計時就需要為各個訪問者定制服務(wù)筐付。定制服務(wù)就是單獨為一個個體提供優(yōu)良的服務(wù)卵惦。我們在做系統(tǒng)設(shè)計時也需要考慮對系統(tǒng)之間或模塊之間的接口采用定制服務(wù)。采用定制服務(wù)就必然要有一個要求:只提供給訪問者需要的方法瓦戚。
  • 接口設(shè)計是有限度的
    接口的設(shè)計粒度越小沮尿,系統(tǒng)越靈活,這是不爭的事實较解。但是畜疾,靈活的同時也帶來了結(jié)構(gòu)的復(fù)雜化,開發(fā)難度增加印衔,可維護性降低啡捶。所以接口設(shè)計一定要注意適度。

接口隔離原則是對接口的定義奸焙,同時也是對類的定義瞎暑,接口和類盡量使用原子接口或原子類來組裝。但是忿偷,這個原子該怎么劃分是設(shè)計模式中的一大難題金顿,在實踐中可以根據(jù)以下幾個規(guī)則來衡量:

  • 一個接口只服務(wù)于一個子模塊或業(yè)務(wù)邏輯。
  • 通過業(yè)務(wù)邏輯壓縮接口中的public方法鲤桥,接口時常去回顧揍拆,盡量讓接口達到最小。
  • 已經(jīng)被們污染了的接口茶凳,盡量去修改嫂拴,若變更的風(fēng)險較大,則采用適配器模式進行轉(zhuǎn)化處理贮喧。
  • 了解環(huán)境筒狠,拒絕肓從箱沦。每個項目或產(chǎn)品都有特定的環(huán)境因素,環(huán)境不同谓形,接口拆分的標準就不同灶伊。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寒跳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子童太,更是在濱河造成了極大的恐慌胸完,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘贮,死亡現(xiàn)場離奇詭異,居然都是意外死亡择膝,警方通過查閱死者的電腦和手機誓琼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肴捉,“玉大人腹侣,你說我怎么就攤上這事〕菟耄” “怎么了傲隶?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窃页。 經(jīng)常有香客問我跺株,道長,這世上最難降的妖魔是什么脖卖? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任乒省,我火速辦了婚禮,結(jié)果婚禮上畦木,老公的妹妹穿的比我還像新娘袖扛。我一直安慰自己,他們只是感情好十籍,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布蛆封。 她就那樣靜靜地躺著,像睡著了一般勾栗。 火紅的嫁衣襯著肌膚如雪惨篱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天围俘,我揣著相機與錄音砸讳,去河邊找鬼。 笑死界牡,一個胖子當著我的面吹牛簿寂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欢揖,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼陶耍,長吁一口氣:“原來是場噩夢啊……” “哼奋蔚!你這毒婦竟也來了她混?” 一聲冷哼從身側(cè)響起烈钞,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坤按,沒想到半個月后毯欣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡臭脓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年酗钞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片来累。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡砚作,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘹锁,到底是詐尸還是另有隱情葫录,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布领猾,位于F島的核電站米同,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摔竿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一熬苍、第九天 我趴在偏房一處隱蔽的房頂上張望郁季。 院中可真熱鬧,春花似錦梦裂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掀抹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傲武,已是汗流浹背城榛。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工狠持, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞻润,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓正勒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親昭齐。 傳聞我的和親對象是個殘疾皇子矾柜,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理怪蔑,服務(wù)發(fā)現(xiàn),斷路器缆瓣,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 設(shè)計模式六大原則 設(shè)計模式六大原則(1):單一職責原則 定義:不要存在多于一個導(dǎo)致類變更的原因。通俗的說隧甚,即一個類...
    viva158閱讀 765評論 0 1
  • 設(shè)計模式之六大原則(轉(zhuǎn)載) 關(guān)于設(shè)計模式的六大設(shè)計原則的資料網(wǎng)上很多...
    霄霄霄霄閱讀 898評論 0 1
  • 程序設(shè)計的6大原則: 單一職責原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則開閉原則 從根本學(xué)好戚扳,理解為什么要...
    silencefun閱讀 2,403評論 1 4
  • 我聽見雨滴落在綠綠綠葉上
    到燈塔去閱讀 151評論 0 0