日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象设计原则之一:单一职责原则

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象设计原则之一:单一职责原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

??什么意思呢?

? 所謂單一職責原則就是一個類只負責一個職責,只有一個引起變化的原因。

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

軟件設計真正要做的許多內容,就是發現職責并把這些職責相互分離;如果能夠想到多于一個動機去改變一個類,那么這個類就具有多于一個職責,就應該考慮類的分離。

以調制解調器為例如下圖:

??????                                 

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

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

?????? 因此要重構Modem類,從中抽象出兩個接口,一個專門負責連接,另一個專門負責數據傳送。依賴Modem類的元素要做相應的細化,根據職責的不同分別依賴不同的接口。如下圖:

???????????????????????                 

?

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

?

總結單一職責優點:

???? 降低類的復雜性,

???? 提高可維護性

???? 提高可讀性。

?????降低需求變化帶來的風險。需求變化是不可避免的,如果單一職責做的好,一個接口修改只對相應的實現類有影響,對其它的接口無影響,這對系統的擴展性和維護性都有很大的幫助。

轉載于:https://www.cnblogs.com/mamxfx/p/7148055.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的面向对象设计原则之一:单一职责原则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。