single reponsibility principle,簡稱:srp
乙個類只負責一項職責。換種說法,就乙個類而言,應該只有乙個引起它變化的原因。問題由來:類t負責兩個不同的職責:職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。
解決方案:遵循單一職責原則。分別建立兩個類t1、t2,使t1完成職責p1功能,t2完成職責p2功能。這樣,當修改類t1時,不會使職責p2發生故障風險;同理,當修改t2時,也不會使職責p1發生故障風險。
衡量著使用:
乙個簡單的例子,動物的故事,**如下:
public
class
animal
public
void
action()
flying");
}elseif(
this
._name.
equals
("魚"))
swimming");
}//……
}}
動物類,呼吸方法中分別寫了雞和魚的活動方式,雞活動是飛、魚活動是游泳,當出現其他動物時action類就不穩定了,就得不斷的修改此方法,不斷的 if…else… 。因此,製造了不穩定性,若方法內業務複雜,容錯率就非常低了。
倘若將**改寫一下。設定乙個抽象類animal。魚類animalfish和雞類animalchicken分別繼承自動物類。類的複雜性降低了,可讀性也同時提高了,最重要的是職責劃分也明確了。當然,也就更容易維護了。
**如下:
public
abstract
class
animal
//動物類 ——— 抽象類
public
abstract
void
breath()
;public
abstract
void
action()
;}
public
class
animalfish
:animal
//魚類
public
override
void
breath()
呼吸水");
}public
override
void
action()
swimming");
}}
public
class
animalchicken
:animal
//雞類
public
override
void
breath()
呼吸空氣");
}public
override
void
action()
flying");
}}
class
program
}}
設計模式六大原則 單一職責
不要存在多餘乙個導致類變更的原因。public class animal public class client 如果這個時候新增魚,因為魚只能呼吸水,所以需要修改animal類 public class animal else public class client 這樣做的話,就違背了設計模式的...
設計模式六大原則 單一職責原則
設計模式六大原則 1 單一職責原則 定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責,乙個人只負責做一件事。乙個類,只有乙個引起它變化的原因。應該只有乙個職責。每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生...
設計模式六大原則(1) 單一職責原則
定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...