我有一個類,它有我想正確處理複製對象的子類。名爲Item的超類有一個拷貝構造函數,子類也有它們自己的。但是,我想知道的是如何使它成爲下面的工作。複製構造函數和多態性
Item
類(簡化的描述)
構造:
public Item(...) {
}
拷貝構造:
public Item(Item template) {
}
- 基本佈局相同的在這方面的每個亞類中,除此之外,在他們只是使用不同的構造函數創建項目的新實例來自存儲在文本文件中的數據的新對象(從模板對象傳遞數據),然後從模板對象中填充其他字段。
的子類之類的東西武器,盔甲,盾牌等
我想要做的是能說:
Weapon weapon = new Item(weapon);
哪裏武器是Weapon
和正確的複製調用構造函數(屬於特定的子類),返回一個新的對象類型Weapon
,而不是僅返回一個新的Item
只有屬於武器的Item
部分。什麼是最好的和/或正確的方式來做到這一點?
你可能想要一個[工廠模式](http://en.wikipedia.org/wiki/Factory_method_pattern) 。雖然在你的情況下,我不確定具有多態構造函數的好處是什麼,因爲你正在與子類「Weapon」而不是基類「Item」進行交互。如果你知道你正在獲得'Weapon',只需調用'Weapon()'。 – aruisdante
你可能是對的工廠模式的事情。我有一個單獨的方法在其他地方從模板項創建項目,我想推廣它,而不是爲每個子項的單獨的方法,我現在必須,因爲類有單獨的複製構造函數。 –