Я думал об этой проблеме и не мог понять, какое было бы наиболее логичное решение. Я предложу сценарий интерфейса / абстрактного класса Animal, класса Fi sh, который наследуется от Animal, и фабричного класса AnimalFactory, который создает экземпляры объектов Animal. Мне поручено клонировать экземпляр Fi sh. Для справки, под «клоном» я подразумеваю использование экземпляра A для создания нового экземпляра B, где A! = B, но их классы и состояния идентичны.
Теперь мой вопрос: как бы вы клонировали экземпляр Fi sh? Я думаю, что мне больше всего интересно здесь, вы называете фабрику, чтобы клонировать это или нет? Ниже приведены два наиболее логичных решения, которые я нашел:
public clone() {/* return new fish with the same state */}
в классе Fi sh. public clone(Animal toClone) {/* return toClone.clone() */}
в классе AnimalFactory, где clone()
в классе Fi sh имеет защищенный доступ.
Повторю мой вопрос: как бы вы клонировали объект, созданный фабрикой?