面向?qū)ο笾涌诟綦x原則

一.簡稱

英文全稱InterfaceSegregation Principles,縮寫是ISP篙骡。

二.定義

一種定義是:客戶端不應該依賴于它不需要的接口溜腐;另一種定義是類間的依賴關(guān)系應該建立在最小的接口上倘核。

三.問題

比如當我們用到流的時候,在最后都要做關(guān)閉操作兰英,我們既要判斷非空操作展融,又要try...catch,寫一串代碼,如果只用到一個類還好渔工,要是類多的話锌钮,就要寫很多了,是可忍孰不可忍引矩。

四.解決

既然都要實現(xiàn)了Closeable接口梁丘,那么只要建立一個統(tǒng)一的方法來關(guān)閉這些對象就行了
舉例

public void put (String url,Bitmap bitmap){
        FileOutputStream fileOutputStream =null;
        try {
            fileOutputStream =new FileOutputStream(cacheDir + url);
            bitmap.compress(Bitmap.CompressFormat.PNG,100,fileOutputStream);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(fileOutputStream!=null){
                try {
                    fileOutputStream.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }

try...catch中有多層級的大括號,很容易將代碼寫到錯誤的層級中旺韭,如果有很多類都需要關(guān)流操作氛谜,那么每個類都要寫這么多代碼,想必也是挺煩人的区端,怎么解決呢值漫?既然要實現(xiàn)Closeable接口,那就可以創(chuàng)建一個方法統(tǒng)一來關(guān)流织盼。

public final class CloseUtil{
            private CloseUtil(){}
     public static void closeQuietly(Closeable closeable){
        if(null!=closeable){
            try{
                closeable.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
} 

把關(guān)流的方法應用到put方法中:

public void put (String url,Bitmap bitmap){
        FileOutputStream fileOutputStream =null;
        try {
            fileOutputStream =new FileOutputStream(cacheDir + url);
            bitmap.compress(Bitmap.CompressFormat.PNG,100,fileOutputStream);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
           CloseUtil.closeQuitely(fileOutputStream);
        }
    }

代碼瞬間清晰了好多杨何,依賴于Closeable抽象而不是具體實現(xiàn),并且建立在最小化依賴原則的基礎上悔政,只需要知道這個對象是可關(guān)閉的晚吞,其他的不需要擔心,即接口隔離原則谋国。

Bob大叔(Robert C Martin)在21世紀早期將單一職責槽地、開閉原則、里氏替換原則、接口隔離以及依賴倒置5個原則定義為SOLID原則捌蚊,作為面向?qū)ο缶幊痰?個基本原則集畅,當這些原則被一起應用時,它們使得一個軟件系統(tǒng)更清晰缅糟、簡單挺智、最大程度地擁抱變化。

總結(jié):

接口隔離優(yōu)點:
(1)簡潔代碼
(2)接口最小化
(3)增加靈活性

baby.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窗宦,一起剝皮案震驚了整個濱河市赦颇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赴涵,老刑警劉巖媒怯,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異髓窜,居然都是意外死亡扇苞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門寄纵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳖敷,“玉大人,你說我怎么就攤上這事程拭《猓” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵恃鞋,是天一觀的道長屋吨。 經(jīng)常有香客問我,道長山宾,這世上最難降的妖魔是什么至扰? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮资锰,結(jié)果婚禮上敢课,老公的妹妹穿的比我還像新娘。我一直安慰自己绷杜,他們只是感情好直秆,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞭盟,像睡著了一般圾结。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上齿诉,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天筝野,我揣著相機與錄音晌姚,去河邊找鬼。 笑死歇竟,一個胖子當著我的面吹牛挥唠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焕议,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼宝磨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盅安?” 一聲冷哼從身側(cè)響起唤锉,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎别瞭,沒想到半個月后腌紧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡畜隶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了号胚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片籽慢。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猫胁,靈堂內(nèi)的尸體忽然破棺而出箱亿,到底是詐尸還是另有隱情,我是刑警寧澤弃秆,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布届惋,位于F島的核電站,受9級特大地震影響菠赚,放射性物質(zhì)發(fā)生泄漏脑豹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一衡查、第九天 我趴在偏房一處隱蔽的房頂上張望瘩欺。 院中可真熱鬧,春花似錦拌牲、人聲如沸俱饿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拍埠。三九已至,卻和暖如春土居,著一層夾襖步出監(jiān)牢的瞬間枣购,已是汗流浹背嬉探。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坷虑,地道東北人甲馋。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像迄损,于是被迫代替她去往敵國和親定躏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理芹敌,服務發(fā)現(xiàn)痊远,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 本文出自《Android源碼設計模式解析與實戰(zhàn)》中的第一章氏捞。 1碧聪、優(yōu)化代碼的第一步——單一職責原則 單一職責原則的...
    MrSimp1e0閱讀 1,759評論 1 13
  • 單一職責原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,760評論 2 5
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法液茎,內(nèi)部類的語法逞姿,繼承相關(guān)的語法,異常的語法捆等,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • 尹新月走后栋烤,廚房里的氣氛十分的低沉谒养。小葵默默地走了過去,收拾起那碎了一地的帶著碎片的豬肉燉粉條明郭。 怕是碎的不是那做...
    卿淺墨閱讀 1,316評論 0 9