2014年9月17日 星期三

[ 設計原則 ] - 單一職責原則(SRP,Single Responsibility Principle)

  單一職責原則(SRP,Single Responsibility Principle)是個還蠻淺顯易懂的原則,在物件導向的觀念裡,一個良好的程式設計應該俱備「低耦合、高内聚」的關係,而這個原則可以幫助我們完成這些



  定義:There should never be more than one reason for a class to change.
     (只能因為一個原因去改變類別)

  當一個物件他俱備了過多的功能(職責)的時候,意味著他有可能因為各種需求變動進而影響到整個類別的變動,在物件導向觀念裡這個應該是被避免的。

  當職責區別的夠開時,程式就可以做到高內聚,並且因為類別的複雜度降低了,所以相對的可讀性、易維護程式也跟著提到了提升。

以下案例說明:
  
 上圖班長這個類別有著收作業登記遲到兩個職責,且班導師數學老師都依賴班長這個角色。數學老師只使用了收作業這個方法,而班導師只使用了登記遲到這個方式。但是當有一天收作業這個方式因為需求的變動而修改時,同樣的也有可能影響到不相關的班導師

 因此應該將接口改為兩個,將不同的功能(職責)分隔開來,使得各自不會影響到彼此。如下圖

本文參考引用:
[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day17 – 單一職責原則

沒有留言:

張貼留言