В принципе можно обойтись и без фабрики, и даже без метода клонирования, просто создав конструктор, который на входе принимает объект, с которого нужно снять копию.
Во многих случаях клиентский код, создающий копии объекта, работает только с интерфейсом объекта. Потому конструкторы ему недоступны. И выбор у него - либо фабрика, либо прототип
Спасибо за видео. Интересная реализация данного паттерна. По идее данная реализация похожа на пример реализации при помощи конструктора, но в данном случае метод copy() создает копию объекта. Также отмечу, что можно реализовать данный паттерн используя сериализацию объекта.
Я так понимаю, что если через clone делать, то не будет фабрики. А почему обязательно надо, чтобы класс имплементил интерфейс Cloneable, иначе переопределенный метод clone будет исключение выбрасывать при кастовании?
При имплементации интерфейса Clonable и реализации метода clone() создается неполная копия объекта (shallow copy), а при такой реализации или при других реализациях данного паттерная создается полная копия (deep copy)
А зачем создавать интерфейс копибал, если в жаве уже существует метод клон у класса обжект и интерфейс клонабл созданные как раз для этих целей? И в случае использование того что я написал будет достаточно в переопределенном методе клон написать super.clone() с отлавливанием исключения. этого будет достаточно если все поля неизменяемые. в противном случае книга эффективное программирование глава 3.4
Потому что это учебное видео, в котором мы пытаемся разобраться с тем, как работают шаблоны проектирования. Которые, конечно же, уже могу тбыть реализованы в Java.
странно кстати что вы незнаете простого факта что клонирование обьекта даже через переопределенный метод clone() является ужасной практикой. для этого используются конструктор.
@@sergeyzakharchenko1706 можно узнать обоснование "ужасной" практики? в чем непосредственно очевидные минусы? И какие плюсы копирования объекта через конструктор?
с дженериком в copyable можно было бы и сразу позвращать Project, вместо Object
Евгений, замечательно объясняете. Благодарю.
В принципе можно обойтись и без фабрики, и даже без метода клонирования, просто создав конструктор, который на входе принимает объект, с которого нужно снять копию.
Во многих случаях клиентский код, создающий копии объекта, работает только с интерфейсом объекта. Потому конструкторы ему недоступны. И выбор у него - либо фабрика, либо прототип
Спасибо. Хорошее видео.
Спасибо за видео. Интересная реализация данного паттерна. По идее данная реализация похожа на пример реализации при помощи конструктора, но в данном случае метод copy() создает копию объекта. Также отмечу, что можно реализовать данный паттерн используя сериализацию объекта.
Спасибо!
ничего не понятно но очень инетересно
не понимаю, а где классы, экземпляры которых нужно создать определяются во время использования программы?
Добрый день, Анастасия - не совсем понятен вопрос.
Не могли бы вы уточнить, пожалуйста.
Метод в фабрике setPeoject() оказался лишним?
Я так понимаю, что если через clone делать, то не будет фабрики. А почему обязательно надо, чтобы класс имплементил интерфейс Cloneable, иначе переопределенный метод clone будет исключение выбрасывать при кастовании?
При имплементации интерфейса Clonable и реализации метода clone() создается неполная копия объекта (shallow copy), а при такой реализации или при других реализациях данного паттерная создается полная копия (deep copy)
А что за UML вы используете? Подскажите - мне понравились диаграммы.
Добрый день.
Для Idea Ultimate - это стандартный плагин.
Не входит в Community Edition.
А для Android Studio можете что-нибудь посоветовать кроме SimpleUMLCE?
Не работал с Android - подсказать не смогу.
А зачем создавать интерфейс копибал, если в жаве уже существует метод клон у класса обжект и интерфейс клонабл созданные как раз для этих целей? И в случае использование того что я написал будет достаточно в переопределенном методе клон написать super.clone() с отлавливанием исключения. этого будет достаточно если все поля неизменяемые. в противном случае книга эффективное программирование глава 3.4
Потому что это учебное видео, в котором мы пытаемся разобраться с тем, как работают шаблоны проектирования. Которые, конечно же, уже могу тбыть реализованы в Java.
странно кстати что вы незнаете простого факта что клонирование обьекта даже через переопределенный метод clone() является ужасной практикой. для этого используются конструктор.
@@sergeyzakharchenko1706 можно узнать обоснование "ужасной" практики? в чем непосредственно очевидные минусы? И какие плюсы копирования объекта через конструктор?
Потому что этот способ больше официально не рекомендуется из-за возможных проблем.
@@igoraleksandrovich1498 вы такой лапочка, мое почтение :-) "Официальный источник" - смешно, честно.
добавьте описание
А зачем здесь описание если по названию видео понятно ,что здесь будет.