2010-08-13 78 views
0

我有一個類如下面問題的設計類

public class Book extends Item{ ...} 
public class DVD extends Item{ ...} 

簿的類型可以是REFRENCE或問題。 DVD只能是ISSUE類型。

那麼應該如下創建Item?

public class Item { 

    public enum ItemType{REFRENCE,ISSUE}; 
    ItemType itemtype; 

} 

或者我應該聲明書和DVD的單獨枚舉?

回答

2

這取決於。 DVD的發行與書籍ISSUE一樣嗎?

如果是這樣,那麼把它放在父類中,並在創建REFERENCE DVD時拋出異常。

如果它沒有在兩個子類中定義單獨的公共枚舉。

+0

這兩個問題都是一樣的。哪種方法會更好?我可以在constrructor中拋出異常嗎?我猜不行 – akshay 2010-08-13 13:59:55

+0

然後在基類中聲明枚舉。否則,你可以擁有一本ISSUE DVD和一本ISSUE書,其中book.getType()和dvd.getType是不可比的,是不同的類型。 – PaulJWilliams 2010-08-13 14:01:17

+0

哦,是的,你可以從構造器中拋出異常 - 在這種情況下可能是IllegalArgumentException。 – PaulJWilliams 2010-08-13 14:03:45

4

如何定義兩個接口ReferenceIssueBook將實現兩者,而DVD將只實現Issue

1

通過使用面向對象的語言特性將某些東西的類型存儲在某個枚舉中。 此外,我不覺得「項目」「有」作爲問題/參考的屬性。它更像是一個「是」的關係,這表明你應該使用繼承/接口。 當然,正確的方法取決於你的程序要做什麼。有時面向對象的構造可能會妨礙你的發展。