Прототип (The Prototype pattern)
Этот шаблон используется, когда создание экземпляра класса почему-либо очень сложно или требует много времени. Тогда вместо создания новых экземпляров проще сделать копии одного экземпляра и модифицировать их соответствующим образом.
Использование этого шаблона в Java значительно упрощено существованием метода clone(), который создает копию объекта того же типа, что и оригинал.
Выводы:
- Реализация этого шаблона позволяет создавать и удалять объекты «на лету»,копируя исходный и актуализируя внутренние данные объекта-копии.
- Для модификации прототипа после копирования необходимо иметь соответствующие методы доступа к данным.
- Сложность при работе с прототипом может заключаться в том, что исходный класс может быть уже написан и не имеет метода clone() или deepClone(). Метод deepClone() требует от всех членов класса, которые являются объектами реализации интерфейса serializable(). Также проблематично клонирование объектов содержащих перекрестные(взаимные) ссылки.
- Для упрощения поисков объекта для копирования, можно создать класс-реестр таких объектов. Первые экземпляры прототипов создаются вместе с реестром. Необходимо учесть, что это будет ресурсоемкая операция.
|