2016-04-10 56 views
1

我知道單一責任原則規定,一個類只應該有一個責任或一個理由來改變。這是否意味着一個有許多聚合成員變量的類違反了這個原則?我的意思是,當一個類將其一些操作委託給它的聚合成員變量是違反SRP的時候?還是這些聚合成員認爲只對他們的行動負責,而包含他們的類別與這些行動無關?單一職責原則和聚合

+2

你問的一個具體例子會很有用。 – nhgrif

+0

假設你有一個視頻遊戲的角色類。在這個類中,你已經聚合了characterAi,characterAnimation和characterController的成員。我只是想確認,即使playerCharacter類擁有所有這些聚合成員,但這並不違反srp。 – Jason

+0

的確如此。但是,如果playerCharacter構造了characterAi,characterAnimation和characterController以及使用它們,您就會多詢問playerCharacter。 – CandiedOrange

回答

0

這個班級有多少不是重點。這是班級的職責。它是爲了什麼。它的責任是什麼。該類可能不會公開任何這些聚合成員。它可能只有一種方法。所有這些成員都需要完成這一項工作。只要它有一份工作,就不違反單一責任原則。

也就是說,在一項工作中可能會過度壓扁,這些工作應該在其他職責中被分組和抽象化。如果這些抽象責任的改變會影響我們的班級,那麼他們就沒有被恰當地抽象出來。

對一個對象的引用只能讓你看到它的接口。不是它的內部變化。

+0

好吧,清除一些事情。非常感謝你。 – Jason