前言:這些都是老師布置的作業得寫,順便記錄下
單一職責原則官方解釋: 對類來說的,即乙個類應該只負責一項職責。
理解:如果類 a 負責兩個不同職責:職責 1,職責 2。當職責 1 需求變更而改變 a 時,可能造成職責 2 執行錯誤,所以需要將類 a 的粒度分解為 b 和 c,這樣 b 就專門解決職責 1, c 就專門解決職責 2
如下面這個例子就沒有體現單一職責原則,可以發現vehicle這個類既去 讓 "汽車" 在路上執行,同時也讓 "飛機" 在路上執行,明顯就錯誤了!
public class demo1
}class vehicle
}
再看下面這個例子,我們用兩個類去定義各自去實現 "飛機" "汽車"的 run 方法,這樣子就不會出現類似的錯誤了!
public class demo2
}class roadvehicle }
class airvehicle
}
總結:單一職責的原則注意事項和細節
降低類的複雜度,乙個類只負責一項職責。
提高類的可讀性,可維護性
降低變更引起的風險
個人理解:其實還是高內聚 低耦合 !
但是再思考下,如果工作量少的話,這樣子去實現會特別的臃腫,大材小用了,那麼當工作量少的話還可以如下去實現,把類 降一級成為 方法!
這裡雖然沒有在類的級別上遵守單一職責原則,但是在方法的級別上,仍然是遵守單一職責
public class demo3
}class vehicle
public void runwater(string vehicle)
}
總結:通常情況下,我們應當遵守單一職責原則,只有當邏輯足夠簡單,才可以在**級違反單一職責原則;只有類中方法數量足夠少,可以在方法級別保持單一職責原則 單一職責原則
定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...
單一職責原則
單一職責原則 乙個類,只有乙個引起它變化的原因。應該只有乙個職責。每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如 要實現邏輯和介面的分離。對於user類,裡...
單一職責原則
問題由來 一心二用,效率降低 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 專注做某件事情 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t2完成職責p2功能。這樣,當修改類t1...