鑑於Mixins通常會將新行爲引入類中,這通常意味着一個類將具有多個行爲。Single Responsibility and Mixins
如果一個班級有單一責任,則將其定義爲只有一個變更理由的班級。
所以,我可以從兩個不同的角度
類只有一個變更理由看到這一點。混入的模塊也只有一個原因需要改變。如果班級改變,只有班級需要重新測試。如果模塊更換,只有模塊需要重新測試。因此,SRP是完整的。
這個班現在有兩個變化的原因。如果班級更改,班級和模塊都需要重新測試。如果模塊改變了,那麼類和模塊都需要重新測試。 Henge,SRP受到侵犯。
使用mixin是否違反了Single Responsibility Principle,最終導致系統維護困難?
如果你需要不相關的類之間的共享行爲,這聽起來像是另一個類的工作。它可以通過一個沒有繼承或混合的接口來處理那些不相關的類之間需要的行爲。這照顧SRP和DRY。 – Tek 2015-02-19 15:40:04