定義:There should never be more than one reason for a class to change.
(只能因為一個原因去改變類別)
當一個物件他俱備了過多的功能(職責)的時候,意味著他有可能因為各種需求變動進而影響到整個類別的變動,在物件導向觀念裡這個應該是被避免的。
當職責區別的夠開時,程式就可以做到高內聚,並且因為類別的複雜度降低了,所以相對的可讀性、易維護程式也跟著提到了提升。
以下案例說明:
上圖班長這個類別有著收作業及登記遲到兩個職責,且班導師及數學老師都依賴班長這個角色。數學老師只使用了收作業這個方法,而班導師只使用了登記遲到這個方式。但是當有一天收作業這個方式因為需求的變動而修改時,同樣的也有可能影響到不相關的班導師。
因此應該將接口改為兩個,將不同的功能(職責)分隔開來,使得各自不會影響到彼此。如下圖
本文參考引用:
[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day17 – 單一職責原則
沒有留言:
張貼留言