我有一个类,它有我想正确处理复制对象的子类。名为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
你可能是对的工厂模式的事情。我有一个单独的方法在其他地方从模板项创建项目,我想推广它,而不是为每个子项的单独的方法,我现在必须,因为类有单独的复制构造函数。 –