java设计模式之设计原则③单一职责原则
定義:
不要存在多于一個導致類變更的原因
一個類/接口/方法只負責一項職責
優點:
降低類的復雜度,提高類的可讀性,提高系統的可維護性、降低變更引起的風險
以下通過案例進行理解單一職責原則:
創建一個Brid(鳥)類
創建一個Test測試類
我們會發現大雁用翅膀非是正確的,但鴕鳥飛不起來,所以我們需要進行判斷
如果現在再傳來一些特色的鳥類,那我們這個方法還要繼續擴展,風險率就變高了,不遵從單一原則。
所以我們現在就從類的層次上將這個Brid拆分開。
創建一個FlyBrid類 表示 會飛的鳥
再創建一個WalkBrid類 表示 走路的鳥
在Test類中就將飛的鳥和走路的鳥進行一個區分
這個就是一個類的單一原則的體現,我們把一個類進行拆分,這樣就使得每個類里面的方法職責是單一的,比較簡單,也不至于修改的時候引入新的問題。
類圖如下:
這個類圖還是比較簡單的
現在呢我們就是用test類去創建FlyBrid和WalkBrid兩個類,對于Brid類已經沒用了
對于職責呢在類層次上還是比較清晰的,這是對于類的單一職責
那接下來就用接口舉例
還是用ICourse進行舉例,創建ICourse接口
getCourseName獲取課程名稱的方法
getCourseVideo獲取視頻的方法
studyCourse學習課程的方法
refundCourse退款方法
對于上面的ICourse接口可不是只有一個職責,首先它一個大職責是獲得課程信息( 課程名稱和視頻信息),那另外一個職責呢就是管理課程,和課程內容無關,例如學習課程,那如果我們學習課程就要獲取課程名稱和視頻,那如果退了這個課程吶可能就獲取不了這個課程名稱和視頻,那就是說退這個課程會影響課程這個接口的獲取課程內容相關的變化,這兩個職責是互相影響的,那我們就可以把這個接口拆成兩個接口,一個接口負責獲取課程信息,另一個接口管理課程
創建一個接口ICourseManager
再創建一個接口ICourseContent
現在我們來創建一個ICourse的實現類實現ICourseManager 和ICourseContent接口
類圖如下:
課程的實現類實現兩個接口,職責呢也是單一的,一個接口的修只對響應的實現類有影響,與其他的接口無關,這個就是從接口級別上來展示單一職責
接下來就是方法級別來展示單一職責:
創建一個類Method
寫一個方法updataUserInfo 參數 可以更新userName 姓名 address 地址
拆分如下
這樣兩個方法的職責就是單一切清晰的,這樣關于方法的單一職責就展示出來了。
在我們實際的開發中如果類都遵循單一職責可能會導致類太多出現爆炸,
所以我們的接口和方法一定要展示單一職責,類的單一職責就看項目的情況而定。
總結
以上是生活随笔為你收集整理的java设计模式之设计原则③单一职责原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java设计模式之设计原则②依赖倒置原则
- 下一篇: java设计模式之设计原则④接口隔离原则