так быстро и просто, что я нифига не понял. Посмотрю ещё раз
@ДмитрийМаркварт-ж5б3 жыл бұрын
Евгений, спасибо большое за ваш труд!
@stanislavkuzmin26115 жыл бұрын
Компактно, но информативно. Спасибо)
@maxforest71335 жыл бұрын
Было бы более понятно если сначала написать без патерна, а потом показать как то же самое можно решить с помощью декоратора
@alibn29113 жыл бұрын
Если не в состоянии сами написать этот код до использования декоратора, тогда вам еще рано смотреть это видео.
@mrakobes2289 ай бұрын
Легче было бы привести всех разработчиков к общему интерфейсу и в классе реализации сеньора добавить метод кодРевью и внедретить в преопределённый метод интерфейса, а тут добавляем целый класс, чтобы добавить функциональность. Иногда использование паттерна избыточно.
@maksimivanov87282 жыл бұрын
Хороший пример про рабочего коня, который делает все за всех). Только вот настоящий Тим-лид вроде должен только координировать и делегировать работу в команде.
@EugeneSuleimanov2 жыл бұрын
Шутка, юмор … :)
@mohawberel4 жыл бұрын
Заебись пример, тем кому непонятно -> прочитайте пару статей на википедии, а потом сюда. там вам и диаграмки и выгоды использования покажут,,, а на ютубчике только код посмотреть можно. Еще раз спасибо автору
@oleksii23623 жыл бұрын
Отличное видео. Я бы показал еще результат вывода на печать при смене местами в Таск: Синьора и ТимЛида.
@EugeneSuleimanov3 жыл бұрын
Спасибо за отзыв!
@wokkku Жыл бұрын
Отличные видео. Коротко и ясно!
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@yosobakki10 ай бұрын
Мой любимый структурный паттерн
@Andrzej39352 жыл бұрын
Спасибо, всё очень доступно!
@EugeneSuleimanov2 жыл бұрын
Спасибо за отзыв!
@alexeystaroverov48045 жыл бұрын
Если посмотришь книжки там всегда идет сначала мотивация на паттерн. Непонятно почему не сделать просто иерархию. Непонятно почему интерфейс developer а не класс
@ksviety3 жыл бұрын
Потому что наследование это ужасно, а так в видео паттерн вообще не правильно показан
@ivanandreev95712 жыл бұрын
@@ksviety почему неправильно?
@ivanandreev95712 жыл бұрын
потому что с помощию только иерархии вы не сможете выполнить добавить к объекту некоторую дополнительную функциональность, которая будет выполняться до, после или вместо основной функциональности (логирование и прочее)
@ksviety2 жыл бұрын
@@ivanandreev9571 Показанное в видео больше похоже на Wrapper. Декоратор должен иметь ровно тот же интерфейс что и декорируемый объект, хорошим примером может быть что-то вроде: Text text = new Capitalized(new Concatenated(new StringText("Hello, "), new FileText(new File("./world.txt")))); text.toString(); // HELLO, WORLD!
@BoberKurwa42 Жыл бұрын
@@ksviety так декоратор в видео и имеет тот же интерфейс, а ещё если судить по книжке банды 4 wrapper и decorator два разных названия одного паттерна...
@timankov2 жыл бұрын
Очень круто! спасибо! сохранил на всякий случай!)
@СергейКарпиченко-с6б3 жыл бұрын
Спасибо большое за видео!
@pate2418 Жыл бұрын
Это все мне очень напомнило: Вот дом, Который построил Джек. А это пшеница, Которая в тёмном чулане хранится В доме, Который построил Джек. А это весёлая птица-синица, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек. Вот кот, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек. Вот пёс без хвоста, Который за шиворот треплет кота, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек. А это корова безрогая, Лягнувшая старого пса без хвоста, Который за шиворот треплет кота, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек. А это старушка, седая и строгая, Которая доит корову безрогую, Лягнувшую старого пса без хвоста, Который за шиворот треплет кота, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек. А это ленивый и толстый пастух, Который бранится с коровницей строгою, Которая доит корову безрогую, Лягнувшую старого пса без хвоста, Который за шиворот треплет кота, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек. Вот два петуха, Которые будят того пастуха, Который бранится с коровницей строгою, Которая доит корову безрогую, Лягнувшую старого пса без хвоста, Который за шиворот треплет кота, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в тёмном чулане хранится В доме, Который построил Джек.
@merlandodeluxe7 ай бұрын
проорал)
@duckdeduct5222 жыл бұрын
Спасибо!
@m0naco6088 ай бұрын
Может было бы лучше не создавать отдельные классы для SeniorJavaDeveloper и JavaTeamLead, а просто создать SeniorDeveloper и TeamLead ? А то получается, для каждого разработчика, который использует другой стек, нужно создавать отдельный класс ? Всё равно же у них есть поле Developer, значит не нужно привязывать класс конкретно к джава разработчику и джава тимлиду ?
@ОпельсинОпельсинов Жыл бұрын
Привет, автор. у тебя ошибка с точки зрения ООП. DeveloperDecorator должен бысть абстрактным, он является суперклассом для JavaTeamLead и SeniorJavaDeveloper. вот отрывок из книги: "AbstractWrapper. Абстрактный класс, выступающий в этой роли, - это общий суперкласс для классов-оберток. Экземпляры этого класса содержат такке ссылку на объект AbstractServiceIF, которому объекты ConcreteWrapper! делегируют операции." МАРК ГРАНД "шаблоны проектирования в JAVA" (для новичков поясню. AbstractWrapper это тот же декоратор) закрепи пожалуйста мой коммент или напиши свой. так, как ты это делал в прошлом видео
@EugeneSuleimanov Жыл бұрын
Сверюсь с первоисточником и отпишусь. Большое спасибо за комментарий!!!
@EugeneSuleimanov Жыл бұрын
Я перечитал GoF по этому поводу и на данный момент, не вижу нарушений классического паттерна. С Марк Гранд не знаком, насколько я знаю GoF считается наиболее авторитетным изданием в контексте паттернов проектирования. Классы Developer, DeveloperDecorator и JavaDeveloper представляют основные компоненты паттерна декоратор. Developer - это интерфейс, определяющий базовые операции для разработчика. DeveloperDecorator - это абстрактный класс-декоратор, расширяющий Developer и предоставляющий базовую реализацию обертки для компонента. JavaDeveloper - это конкретная реализация компонента. Классы JavaTeamLead и SeniorJavaDeveloper представляют конкретные декораторы. Они расширяют DeveloperDecorator и добавляют дополнительное поведение к компоненту. JavaTeamLead добавляет функциональность отправки еженедельного отчета, а SeniorJavaDeveloper добавляет функциональность код-ревью. Класс Task демонстрирует использование паттерна декоратор. Он создает цепочку декораторов, начиная с JavaDeveloper, затем SeniorJavaDeveloper и, наконец, JavaTeamLead. Вызов метода makeJob() на объекте developer приведет к выполнению задания с добавленной функциональностью каждого декоратора. Если есть дополнительные замечания, обязательно просмотрю. Еще раз спасибо за комментарий.
@СергейСоколов-е6б3 жыл бұрын
А разве этот шаблон не противоречит Single Responsibility Principle?
@darst946 жыл бұрын
Добрый день, подскажите что за плагин для диаграмм
@romanmotovilov1296 жыл бұрын
Дима Артюхов - это встроенные диаграммы для платной версии программы(Enterprise Edition)
@Redvils4 жыл бұрын
Привет, подскажи на 6 минуте видео ты как-то открыл диаграмму своих классов, как это сделать? Нужен планиг какой-то?
@EugeneSuleimanov4 жыл бұрын
Нет, это стандартный плагин idea ultimate
@Redvils4 жыл бұрын
@@EugeneSuleimanov Понял, спасибо
@telephon32082 жыл бұрын
не поняла в чем преимущество шаблона
@mrakobes2289 ай бұрын
Я тоже. Легче было бы привести всех разработчиков к общему интерфейсу и в классе реализации сеньора добавить метод кодРевью и внедретить в преопределённый метод интерфейса, а тут добавляем целый класс, чтобы добавить функциональность.
@ВикторДемихов-т8р5 жыл бұрын
Тема не раскрыта. Пример то понятный. Но понять для чего это используется самое главное. Но приведённый пример не объясняет ничего.
@MrDepava5 жыл бұрын
Иногда нет смысла обьяснять, у тебя будет класс с какой то библиотеки, который ты ну никак не можешь изменить, у тебя нет доступа к этому. Но тебе хочется, чтоб класс этот делал не только то, что он умеет, а чуточку больше, и у тебя в голове вспомнится про декоратор.
@protiv_bio3 жыл бұрын
@@MrDepava то есть это по сути костыли. У нас, к сожалению, иногда предпочитают использовать странные решения, зато без "костылей" даже в виде паттернов.
@AndreyDeveloper8 жыл бұрын
Уважаемый автор! А объясните пожалуйста, а почему вы систематически пишете Developer developer = new JavaDeveloper(); а не JavaDeveloper developer = new Javadeveloper(); Какие преимущества такая запись даёт? Она же более непонятная.
@EugeneSuleimanov8 жыл бұрын
Уважаемый подписчик, объясняю :) Предположим, что у нас есть некий класс Project, который содержит коллекцию разработчиков разной специализации (т.е. наследников класса Developer - JavaDeveloper, CppDeveloper, PhpDeveloper). Для этого мы создаём List developers, в котором можем хранить любой класс, который является наследником Developer. Думаю дальнейшие преимущества понятны. Тоже самое исользуется и для самих коллекций, например: List strings = new ArrayList(); Set stingSet = new HashSet(); и т.д.
@AndreyDeveloper8 жыл бұрын
То есть вы хотите сказать, что в List developers можно запихнуть все объекты, реализующие интерфейс developer? Тогда понятно. И очень доступно.
@EugeneSuleimanov8 жыл бұрын
Именно. Всегда пожауйста, Andy.
@Yuu-tu4vo3 жыл бұрын
@@AndreyDeveloper механизм upcast-а
@firewatermoonsun Жыл бұрын
Т.е. используется, если нужно добавить какую-то дополнительную функциональность.
@EugeneSuleimanov Жыл бұрын
Да, все верно.
@ПутьТрейдера-ж3к4 жыл бұрын
top
@АмэйзингЧенал4 жыл бұрын
Delegate ?
@anjey-duda3 жыл бұрын
как в IntelliJ IDEA показывать Диаграммы?
@EugeneSuleimanov3 жыл бұрын
Это стандартный плагин для Ultimate edition
@anjey-duda3 жыл бұрын
@@EugeneSuleimanov а для Community?
@AlexK-xn7tq Жыл бұрын
Кто-то что-то понял?))
@oleg_kishinskii2 жыл бұрын
эм... не понял, еще раз. :)
@dimitrishat86593 жыл бұрын
джаб - называют японцев. А работа - это джоб ! в простонародье вджобывать.
@dimitryrusu4022 Жыл бұрын
В американском акценте говорится ближе к "а". Например, никто не говорит в США hot как хот, они говорят хат.