C 設計模式六大原則 單一職責

2021-10-01 13:22:44 字數 1643 閱讀 6267

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...