Сложно быть очень точным, не зная много о том, что именно вы моделируете, но здесь все идет ...
Как вы заметили, есть как минимум две стратегии для получения "изменяемых копий экземпляра"требуемой функциональности прототипа:
1) При создании экземпляра на основе прототипа полностью скопируйте данные экземпляра из прототипа.После этого между ними не будет связи.
PRO: более быстрый доступ к данным экземпляра с меньшим количеством логики.
CON 1: Любое обновление вашего прототипа не попадет в экземпляры.например, если у вас неверный адрес компании в прототипе.
CON 2: вы дублируете данные базы данных - в определенной степени - расточительно, если у вас огромные записи.
2) При создании экземпляра на основе прототипа сохраните ссылку на «родительскую» запись, т.е. прототип, а затем сохраняйте только обновленные поля в фактическом экземпляре.
PRO 1: Обновления прототипа отражаются во всех экземплярах.
PRO 2: Более эффективное использование пространства хранения (меньше дублирования данных)
CON: больше логики при извлечении экземпляра из базы данных.
В итоге: я не могу придумать волшебного решения, которое бы дало вам лучшее из обоих миров.Они обе являются действительными стратегиями, в зависимости от конкретной проблемы и ограничений (например, скорость выполнения в зависимости от объема хранилища).
Если вы выберете 2), я, конечно, не думаю, что это катастрофа - особенно если вы хорошо моделируете вещи и находите лучший и наиболее эффективный способ структурировать вещи в основных данных.