Как клонировать объект, созданный фабрикой? - PullRequest
0 голосов
/ 24 апреля 2020

Я думал об этой проблеме и не мог понять, какое было бы наиболее логичное решение. Я предложу сценарий интерфейса / абстрактного класса 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 имеет защищенный доступ.

Повторю мой вопрос: как бы вы клонировали объект, созданный фабрикой?

...