小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

面向?qū)ο笤O(shè)計原則之一:單一職責(zé)原則

 Baruch 2017-08-04

單一職責(zé)原則(Single Responsibility Principle SRP)

  There should never be more than one reason for a class to change.

  什么意思呢?

  所謂單一職責(zé)原則就是一個類只負(fù)責(zé)一個職責(zé),只有一個引起變化的原因。

      如果一個類承擔(dān)的職責(zé)過多,就等于把這些職責(zé)耦合在一起,一個職責(zé)的變化會削弱或抑制這個類完成其他職責(zé)的能力,這個耦合會脆弱的設(shè)計。

軟件設(shè)計真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé)并把這些職責(zé)相互分離;如果能夠想到多于一個動機去改變一個類,那么這個類就具有多于一個職責(zé),就應(yīng)該考慮類的分離。

以調(diào)制解調(diào)器為例如下圖:

                                       

      從上述類圖里面我們發(fā)現(xiàn)有四個方法Dial(撥通電話),Hangup(掛電話),Receive(收到信息),Send(發(fā)送信息),經(jīng)過分析不難判斷出,實際上Dial(撥通電話)和Hangup(掛電話)是屬于連接的范疇,而Receive(收到信息)和Send(發(fā)送信息)是屬于數(shù)據(jù)傳送的范疇。這里類包括兩個職責(zé),顯然違反了SRP。

      這樣做有潛在的隱患,如果要改變連接的方式,勢必要修改Modem,而修改Modem類的結(jié)果導(dǎo)致凡事依賴Modem類可能都需要修改,這樣就需要重新編譯和部署,不管數(shù)據(jù)傳輸這部分是否需要修改。

       因此要重構(gòu)Modem類,從中抽象出兩個接口,一個專門負(fù)責(zé)連接,另一個專門負(fù)責(zé)數(shù)據(jù)傳送。依賴Modem類的元素要做相應(yīng)的細化,根據(jù)職責(zé)的不同分別依賴不同的接口。如下圖:

                                        

 

       這樣以來,無論單獨修改連接部分還是單獨修改數(shù)據(jù)傳送部分,都彼此互不影響。

 

總結(jié)單一職責(zé)優(yōu)點:

     降低類的復(fù)雜性,

     提高可維護性

     提高可讀性。

     降低需求變化帶來的風(fēng)險。需求變化是不可避免的,如果單一職責(zé)做的好,一個接口修改只對相應(yīng)的實現(xiàn)類有影響,對其它的接口無影響,這對系統(tǒng)的擴展性和維護性都有很大的幫助。

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多