В данном видео на 9:42, популярная ошибка "копипаста". Объектная переменная g1 была изменена на g2, но ниже используются методы все через ту же g1. Не хватает примера как использовать это с ПОЛЬЗОЙ в программирование, в чем плюсы.
Через композицию более понятно и менее запутанно. Если делать через наследования, то у нас получатся парные методы и их всегда все будут путать. И первый способ вроде уже, как deprecated?
Отличное видео. Интересно. Были мысли, а что мешает классу RasterGraphics самому просто реализовать методы интерфейса. Но нельзя наверно рушить чужой код и вообще это будет рушить смысл чужих классов. Плюс я слышал что часто всё это нужно когдп разные там фреймворки и т.д. Там тем более нельзя так поступать.
А почему бы не 2м случае не прокидывать объект класса RasterGrafic в конструктор VectorAdapterRaster2 и использовать. К примеру у RasterGrafic был интерфейс A. И в конструкторе VectorAdapterRaster2 мы бы указали его и тогда его RasterGrafic тоже подходил бы.
сильно не пинайте - Поправьте если что... - с этого видео понял что адаптер - это в какой-то степени напоминает полиморфизм(Если в полиморфизме метод один а реализации может быть несколько, только для его наследников класса (т.е. сужение )) то в Адаптер получается связка между разным классом и интерфейсом.... т.е класс обертка? с переопределлеными методами?🤔
Решил повторить что на видео и у меня при создание экземпляра в методе мэйн выскакивает ошибка Exception in thread "main" java.lang.Error: Unresolved compilation problem: No enclosing instance of type Solution is accessible. Must qualify the allocation with an enclosing instance of type Solution (e.g. x.new A() where x is an instance of Solution). at Solution.main(Solution.java:16) подскажите что не так? перепечатал 1 в 1.
@@programm4you, не работает, исключение выскакивает. Хотя может я что-то неправильно сделал, хотя вряд ли. Минут 20 не мог понять почему не работает, но потом увидел, что на видео все через g1 вызывается
все супер, тока ты когда создал второй адаптер, ты создал экземпляр интерфейса g2, но скопировал и повторно вызвал g1 с теми же методами и говоришь тот же самый результат)))
Привет с javarush, просто разжевал за 10 минут то, что не мог понять час. Спасибо, подписался.
я тож оттуда
Я на 5й минуте видео: "Блин как так можно непонятно объяснять?"
Я на 11й минуте: "Блин да тут воообще всё очевидно."
Благодарю вас сударь.
кайф, автор ты смог объяснить то что не смогли другие.
Заодно погуглил и для себя узнал чем отличается переменный ток от постоянного и расторная графика от векторной
В данном видео на 9:42, популярная ошибка "копипаста". Объектная переменная g1 была изменена на g2, но ниже используются методы все через ту же g1.
Не хватает примера как использовать это с ПОЛЬЗОЙ в программирование, в чем плюсы.
+Valerii Kurnykov вот я лажанулся. Спасибо, что заметил и написал.
+Valerii Kurnykov в java что бы "соединить" массив и ListView и т.д. нужен адаптор, напрямую работать с ним нельзя как в c#
InputStreamReader преобразует InputStream к интерфейсу Reader
@@alexxxyzzz я блять голову ломал, какого хрена он мне буквачки вместо байтов отдаёт собака. Спасибо. 😊
+
Большое спасибо! Коротко и все понятно, еще и разные варианты и гибкость в реализации показываете.
Пожалуйста не останавливайся! Пили видосы дальше.
😃 ааа-аа самое понятное видео по паттерну адаптера!
Лучшее объяснение, спасибо!
привет с JavaRush!
Большое спасибо!
Ваши уроки понравились больше всего.
Все толково объясняете
Офигенный видос. Очень доходчиво объясняешь
Спасибо за доступное и понятное объяснение этой темы. Респект. Лайк )
Лучший, спасибо!
Спасибо! И тоже с javarush )
лайк подписка,посмотрел другие источники,этот самый понятный
Благодарствую за видео.
спасибо из 21 года))
Через композицию более понятно и менее запутанно. Если делать через наследования, то у нас получатся парные методы и их всегда все будут путать. И первый способ вроде уже, как deprecated?
Все классно! Понятно объясняешь. Одна ошибочка во втором примере должно быть g2.drawLine(); and g2.drawSquare();
Спасибо от явараш пользователя. Очень здоровское видео))))
Спасибо огромное!
+Andrew Valevskiy на здоровье, будет еще))
Супер!
Понятно и доступно объяснил, спасибо !
Отличное видео. Интересно.
Были мысли, а что мешает классу RasterGraphics самому просто реализовать методы интерфейса. Но нельзя наверно рушить чужой код и вообще это будет рушить смысл чужих классов. Плюс я слышал что часто всё это нужно когдп разные там фреймворки и т.д. Там тем более нельзя так поступать.
Спасибо большое extends Спасибо implements Огромное!
Спасибо. Лаконично и доходчиво
Первый метод не подойдет если у класа к которому мы делаем адаптер и у нашего интерфейса названия (но не реализация) некоторых метедов совпадают?
Спасибо за понятное объяснение
просто, понятно, спасибо большое!
Спасибо, очень толково и кратко.
А почему бы не 2м случае не прокидывать объект класса RasterGrafic в конструктор VectorAdapterRaster2 и использовать. К примеру у RasterGrafic был интерфейс A. И в конструкторе VectorAdapterRaster2 мы бы указали его и тогда его RasterGrafic тоже подходил бы.
сильно не пинайте - Поправьте если что... - с этого видео понял что адаптер - это в какой-то степени напоминает полиморфизм(Если в полиморфизме метод один а реализации может быть несколько, только для его наследников класса (т.е. сужение )) то в Адаптер получается связка между разным классом и интерфейсом.... т.е класс обертка? с переопределлеными методами?🤔
Спасибо тебе, дорогой!
с наследованием изящно получилось )
LIKE From JavaRush
Решил повторить что на видео и у меня при создание экземпляра в методе мэйн выскакивает ошибка Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Solution is accessible. Must qualify the allocation with an enclosing instance of type Solution (e.g. x.new A() where x is an instance of Solution).
at Solution.main(Solution.java:16)
подскажите что не так? перепечатал 1 в 1.
Отличное видео! Спасибо!
Спасибо вам большое!
Спасибо!
Я новичок в программировании. Скажите в чем отличие паттерна адаптера от паттерна делегирования?
В целом всё понятно, но есть небольшая ошибка:
при реализации вторым способом методы вызывает g1, а не g2
Спасибо большое
Внутри данного примера с адаптером используется еще 2 паттерна: упомянутая композиция и делегирование)
супер!
Все понятно, кроме того - зачем там нужен интерфейс? Можно ведь просто переопределить методы класса-предка?
Нормально объяснил
Отлично объясняйсон! Отлично) лукойс с меня
Vysokomornyi !)
Помогло
Небольшая поправка в последнем примере, где экземпляр объекта raster передается как параметр в конструкторе. Это уже агрегация а не композиция.
композиция это частный, "строгий" случай агрегации. Шо не ?
в main g1 4 раза вместо 2 - g2
Почему я программированием занялся в 31 год? Если бы изучал в момент выхода этого видео, было бы все намного проще...
Вариант с наследлванием - очень плохая идея. Используйте композицию.
почему?
на UML диаграме 3 класа. Client - не клас
В другому прикладі потрібно використовувати об’єкт g2 :)
ошибся, да. Вы правы, надеюсь, для g2 так же рабоатет :))
@@programm4you, не работает, исключение выскакивает. Хотя может я что-то неправильно сделал, хотя вряд ли. Минут 20 не мог понять почему не работает, но потом увидел, что на видео все через g1 вызывается
Первый вариант я считаю лучше.
первый вариант выглядит лучше,но так как в джава нету возможности наследовать несколько раз то иногда первый метод не подойдет.
,
на мониторе 4К смотреть видео качеством 720р, такое себе. А видео полезное, спасибо!
Заставляют смотреть? Понимаю
@@Chekist2008 нет не заставляют.
Тоже мне паттерн ...
все супер, тока ты когда создал второй адаптер, ты создал экземпляр интерфейса g2, но скопировал и повторно вызвал g1 с теми же методами и говоришь тот же самый результат)))
а так все понятно, спасибо)
АХАХАХАХАХАХААХХАХА ЙО-ХО-ХО ГОВОРИТ АХАХАХ
Спасибо!
Спасибо!
Спасибо!