2014-11-25 64 views
1

我想知道'最乾淨'的面向對象的方法是區分具有1個額外屬性的對象。班級結構的清潔OO解決方案

舉例: 假設您有一個獎勵班。 這個類有2個子類:individualAward,bandAward。

我想區分獎項的方式是活躍少於x年的個人和樂隊接受新人獎,而不是常規獎。

問題: 我在哪裏實施新人屬性? 我做了2個新類(沒有附加功能),individualNewcomerAward和bandNewcomerAward?我是否像isNewcomerCategory一樣向獎勵類添加了一個字段?

我不知道OO解決方案是什麼。

回答

1

你當然不想爲每個新屬性引入一個新類,所以我會向父類添加一個屬性。或者添加一個屬性activeSince和一個方法isNewcomer()

2

如果每個獎項都可以成爲新人獎勵,請將該字段添加到獎勵類別中。如果只有其中的一部分可以添加,那麼可以使用isNewcomer方法創建一個接口並將其添加到相應的獎勵類中。 實施可能取決於您使用的語言。