07. 接口隔離原則

標準定義

接口隔離原則(Interface Segregation Principle, ISP) 定義如下:

不要強迫客戶依賴于它們不需要的方法掷倔,應用接口將兩者隔離

生活案例

《解憂雜貨店》是東野圭吾的一本小說柑营,小說描述了這樣的一件事情志笼。

解憂雜貨店

三個小偷在慌亂之中躲進了一個雜貨店,他的主人是浪矢爺爺懊缺。雜貨店已經(jīng)很久沒有開門了袱巨,一切看起來都很陳舊的樣子铁坎,頗有上個世紀的感覺。值得一提的是箫爷,雜貨店還有一個信箱嚷节,這個信箱是浪矢爺爺和小朋友們溝通的橋梁,小朋友們會把他們的一些問題寫成書信投到這個信箱當中虎锚,然后浪矢爺爺會在每天晚上去看小朋友們投進來的信硫痰,認真思考之后給小朋友們一封回信。這么多年過去了窜护,浪矢爺爺也已乘黃鶴去效斑,自然沒有人回信,當然也沒有人寫信柱徙。但是這三個小偷缓屠,就在他們躲進雜貨店的這晚,卻莫名其妙收到了前來咨詢的信件护侮,因男友身患絕癥敌完,年輕女孩月兔在愛情與夢想間徘徊;松岡克郎為了音樂夢想離家漂泊羊初,卻在現(xiàn)實中寸步難行滨溉;少年浩介面臨家庭巨變,掙扎在親情與未來的迷茫中... .... 面對這些來著過去的信件长赞,站在未來的三個人晦攒,自然是開了上帝視角,給他們寫回信得哆,教他們什么去做脯颜,而過去的人,也因為遵循他們的建議柳恐,得到蠻不錯的結(jié)局伐脖。故事的最后热幔,三個小偷也收到了浪矢爺爺?shù)男偶虒麄兯媳樱孕乓锞蓿獮樽约旱奈磥砣紵?/p>

還是挺雞湯的。對于小偷躲進雜貨店那晚而言蠕啄,因為是站在未來給過去的回信场勤,三個人知道寫信人要經(jīng)歷怎么樣的社會變革,他們會很好地告知寫信人怎么去做歼跟,對于所有的問題和媳,由于站在上帝視角,雜貨店都能夠很好地回答哈街,而且不失偏差留瞳。而對于浪矢爺爺而言,他的回信就不是很好寫了骚秦,他不知道自己寫的東西能不能幫助到別人她倘,而且還有可能因為他的回信,對寫信人造成更大的困擾作箍。

浪矢爺爺?shù)睦_硬梁,更多的是策略上的問題。每個人都有每個人的煩惱胞得,有的為學習而煩惱荧止,有的為婚姻而煩惱,有的為工作而煩惱阶剑。不同的煩惱會有不同的解決辦法跃巡,并沒有一個統(tǒng)一的標準。加上浪矢爺爺并不像三個小偷一樣个扰,站在上帝的視角來看待這些問題瓷炮,所以,對于他來講递宅,解答別人的煩惱是一件很困難的事情娘香。

那么,該怎么做办龄?

我們假設(shè)浪矢爺爺是一個婦聯(lián)主任烘绽,有很好的解決家庭矛盾的技能,尤其擅長于解決婚姻問題俐填,對于保大還是保小安接,救老婆還是救老媽手到擒來,不在話下英融。那么盏檐,他在信箱上就可以貼上歇式,“專業(yè)解決婚姻煩惱”的告示。專業(yè)的人做專業(yè)的事情胡野,也比萬金油去解決所有的事情強得多材失。浪矢爺爺這時候,雖然并不是來著未來硫豆,但是憑借他專業(yè)的技術(shù)和知識儲備龙巨,相信他對解決婚姻困擾的問題上能夠勢如破竹。

接口隔離就是這么一回事熊响,一個接口是對調(diào)用方的承諾旨别,寫在接口上的方法調(diào)用方都可能去執(zhí)行。接口就像是浪矢爺爺?shù)男畔浜骨眩{(diào)用方就是寫信人秸弛,投信是調(diào)用接口,而回信就是返回結(jié)果剔难。浪矢爺爺面臨不能解答問題的困擾胆屿,是因為他承諾解決煩惱的領(lǐng)域太大,有些領(lǐng)域他并擅長偶宫,所以他也不能很好地去回答。接口也一樣环鲤,暴露出來就是要給別人調(diào)的纯趋,如果實現(xiàn)沒有寫好,就把接口暴露出來冷离,別人調(diào)的時候發(fā)現(xiàn)了問題吵冒,那怪責的只能是寫接口的人。

(十分抱歉西剥,我對這本小說做了這樣的解讀)

程序例子

具體的業(yè)務按照03. 單一功能原則來定義痹栖。
IPrinter有下面的方法,加墨水瞭空,加紙揪阿,打印。

interface IPrinter {
  void addInk(Ink ink);
  void addPaper(Paper paper);
  void print()
}

現(xiàn)在的可以發(fā)展真快咆畏,我們的打印機不需要加墨水了南捂,他會在空氣中提取霧霾,然后通過牛逼的技術(shù)合成墨水旧找,addInk的方法就不需要溺健,但是,并不是每臺打印機都能采用這種牛逼的技術(shù)钮蛛,有些還是要加墨水的鞭缭。對于這一個改變剖膳,我們怎么在程序上體現(xiàn)呢?如果不根據(jù)接口隔離的原則岭辣,我們完全可以不改程序吱晒,打印機統(tǒng)一實現(xiàn)IPrinter接口就可以了,addInk在舊打印機上調(diào)用易结,在新的打印機上不調(diào)用枕荞,變成空的方法就行,但是搞动,要記住躏精,接口是對調(diào)用方的承諾,如果調(diào)用方在新的打印機上調(diào)用addInk方法鹦肿,并沒有任何的返回矗烛,也不做處理,這樣的代碼很容易出問題箩溃,調(diào)用方就會想瞭吃,我使用了新的打印機,我明明加了黑色的墨水涣旨,但是為什么打印出來的文檔還是紅色的歪架。顯然這是不可理喻的。

根據(jù)接口隔離原則霹陡,我們新舊兩種打印機的接口應該分開來寫和蚪,程序代碼如下:

public interface IPrinter{
  void addPaper(Paper paper);
  void print()
}
public interface IOldPrinter extends IPrinter{
   void addInk(Ink ink);
}

對于新的打印機,我們實現(xiàn)IPrinter烹棉,對于舊的打印機攒霹,實現(xiàn)IOldPrinter,這樣做就能很好遵循接口隔離的原則了浆洗。

http://www.reibang.com/p/8c58fa5308cd

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末催束,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伏社,更是在濱河造成了極大的恐慌抠刺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洛口,死亡現(xiàn)場離奇詭異矫付,居然都是意外死亡,警方通過查閱死者的電腦和手機第焰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門买优,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事杀赢『娑澹” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵脂崔,是天一觀的道長滤淳。 經(jīng)常有香客問我,道長砌左,這世上最難降的妖魔是什么脖咐? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮汇歹,結(jié)果婚禮上屁擅,老公的妹妹穿的比我還像新娘。我一直安慰自己产弹,他們只是感情好派歌,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痰哨,像睡著了一般胶果。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斤斧,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天早抠,我揣著相機與錄音,去河邊找鬼撬讽。 笑死贝或,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的锐秦。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼盗忱,長吁一口氣:“原來是場噩夢啊……” “哼酱床!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起趟佃,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤扇谣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后闲昭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罐寨,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年序矩,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸯绿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓶蝴,靈堂內(nèi)的尸體忽然破棺而出毒返,到底是詐尸還是另有隱情,我是刑警寧澤舷手,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布拧簸,位于F島的核電站,受9級特大地震影響男窟,放射性物質(zhì)發(fā)生泄漏盆赤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一歉眷、第九天 我趴在偏房一處隱蔽的房頂上張望牺六。 院中可真熱鬧,春花似錦姥芥、人聲如沸兔乞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庸追。三九已至,卻和暖如春台囱,著一層夾襖步出監(jiān)牢的瞬間淡溯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工簿训, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咱娶,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓强品,卻偏偏與公主長得像膘侮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子的榛,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361