1
維基百科:單一責任原則如何與貓狗相關?
馬丁界定責任的理由去改變,並得出結論 一個類或模塊應該有一個,且只有一個理由 變化。
但是,每次你看到一個面向對象的比喻時,他們指的貓狗,他們怎麼會有像這樣的屬性和方法:
class Dog extends Animal{
public breed;
public dogYears;
public function bark();
public function move();
public function sleep();
etc, etc...
}
我找到實現樹皮更好的辦法,所以我這樣做。我看到狗不能正常移動,所以我解決了這個問題。等等。改變班級的原因不止一個。
那麼,爲什麼這個比喻總是被使用?遵守SRP會是更好的方式嗎?
確實。否則,每一個動作都應該被提取到它自己的類中。想要增量變量?創建VariableIncrementor實例:) –
謝謝。如果我想讓'狗'和'貓'一起玩? 「Dog」類內部和「Cat」類內部的方法是否可行 - 或者是否應該爲這個操作提供一個'class Interact',與兩個類分開? – tgun926
@ tgun926這真的取決於你想要建模的東西,在做出明智的決定之前,我需要更大的圖片。但通常情況下,我不希望'Dog'與「Cat」耦合。如果有的話,我會讓它與抽象的「動物」交互。 – dcastro