2012-09-04 78 views
0

幾個子類擴展了我的抽象父類。這些子類幾乎沒有相同的屬性,例如日期。所以我的問題是我應該在抽象類中還是在每個子類中聲明這些屬性(日期)的setter和getters? 在一個子類中,它是其他「日期」中的「發佈日期」,所以我應該「投」它到所有日期?良好實踐 - 操作設計

回答

2

取決於。許多建議使用構圖(即:有一個)而不是繼承(即:是)。而且大多數情況下,這取決於你想要達到的目標。兩種方法都有優點和缺點。

如果你想把這些屬性放到基類中,那麼所有的類都有這些屬性,但你說的不是所有的都有。作爲一個很好的設計,如果你沒有完全填充一個對象,也就是說,你留下一些空字段或空的字段,目的是不好的。你的對象應該完全填充。

所以你可以做的是,你可以將包裝屬性轉換爲行爲(另一個對象)並將它們委託給想要使用這些行爲的類。

使用你的直覺,無論哪種感覺都對,並簡化你的生活。

1

如果您要說所有的子類都使用相同的字段來實現相同的目的,那麼通過所有的方法將它添加到父類中,並節省一些重複。如果你認爲子類爲了不同的目的而使用'date'字段(你提到它們被稱爲不同的名字),那麼你應該在子類中聲明它自己,並且不要超級類型的字段用於多於1目的(否則從長遠來看這會非常混亂)。