Вот проблема всех кто пытается рассказать о паттернах, начиная с Банды Четырех, что они это делают на какой-то на столько дикой фигне, что она не имеет никакого отношения к реальной жизни.
@MrAPPOLON1232 жыл бұрын
ну так это же общая структура, реальные примеры ты с опытом получишь, ну и приводить в примеры: " Во первых - это любое более мене серьезное desktop-приложение c возможностями отмены и повторения действий пользователя (undo/redo). Во вторых, это сетевые распределенные системы использующие запросы в виде объектов в качестве основного примитива инициализации каких-либо операций. В третьих - системы с поддержкой асинхронных вызовов, инкапсулирующие обратный вызов в виде callback-объекта. " - чтобы еще больше запутать новичков?
@Аддцкийбоссиотельхазбин Жыл бұрын
Классно, но не понятно зачем если уже Database все это реализует, лучше длинное объяснение на живом примере. Честно не понятно зачем
@controlTheBallGame Жыл бұрын
Объяснил сложную тему легко и просто, спасибо автору👍
@EugeneSuleimanov Жыл бұрын
Спасибо за отзыв!
@ivan-ivanov-ivanovich Жыл бұрын
В каком он месте объяснил ? Он код начмакал и всё.
@viktorlatyshey4397 Жыл бұрын
@@ivan-ivanov-ivanovich Привет. Дело в том, что автор приводит в роликах пример паттернов. Мне как новичку очень сложно понять по словестному описанию паттерна его суть (будем считать, что до меня туго доходит информация в текстовом виде😅). Я пришёл на этот канал, посмотрел реализацию и послушал слова автора и мне стало проще понять суть паттерна и смысл слов в описании данного шаблона стал на свои места. Возможно для меня проще так воспринимать, а Вам проще понять объяснения из текста. В любом случае я уважаю Вашу точку зрения, но для мне автор действительно помог разобраться. У меня всё)
@ivan-ivanov-ivanovich Жыл бұрын
@@viktorlatyshey4397 чел, тебе заняться нечем ?😁
@Pewdew4 жыл бұрын
а что делать если у меня дао слой, как мне впихнуть этот шаблон к нему? Тут одни войд методы, но в реалии там везде и принимается что-то и возвращается, кроме делита, там булеан, да помимо круд, еще есть свои особенные методы под каждую таблу.
@svdminsk3 жыл бұрын
Большинство объясняторов и обучаторов объясняют только то, что что смогли понять сами
@darksideworld77533 жыл бұрын
А как бы выглядел код если бы команды было прилично много? Неужели для каждой команды нужно было заводить поле и метод? Меня очень смутил этот момент, когда вы создавали разработчика
@СэмФишер-х4д3 жыл бұрын
сколько пересмотрел туториалов по java, связанных с этим паттерном, этот наверное самый понятный. пример, который сразу позволяет выстроить какую-то картинку в голове. спасибо!
@valeriyemelyanov90904 жыл бұрын
Не имея практического опыта сложно понять как использовать паттерн на практике. Было бы интереснее / понятнее, если бы команды не просто последовательно вызывались -> а для вызова команд было организовано простое консольное меню
@romanihnatov56293 жыл бұрын
Можно ли данный паттерн рассматривать как аналог DAO or Repository(в контексте применения к бд) ?, как то очень похоже, что реализация методов прячется за некий интерфейс.
@вапвапвапвапва-ж1и Жыл бұрын
6:10 не совсем удачно передавать 4 команды в конструктор, имхо. Лучше передать 1 команду, и каждый раз сэтать новую, а метод должен быть только 1 в классе Девелопер executeRecord() например. Ну либо да, как Yuriy Albu ниже написал, сразу все классы инициализировать в Девелопере и не передавть их в конструкторе
@lexjust7 жыл бұрын
Спасибо! Классическая реализация паттерна, то что нужно !
@EugeneSuleimanov7 жыл бұрын
Пожалуйста, Алексей. Спасибо за отзыв.
@nikitaslivko61507 жыл бұрын
Спасибо вам за видео!
@vasiligorodensky92557 жыл бұрын
А как же постановка в очередь и откат назад? С постановкой в очередь, в принципе не сложно, но как откат делать? Например, после операции update, как откатить? P.S. Спасибо за уроки
@EugeneSuleimanov7 жыл бұрын
Так ведь цель видео не решение бизнес-задачи, а показать пример использования шаблона проектирования.
@HowItWorks5 жыл бұрын
тогда надо ввести транзакции и транзакшен менеджера
@svdminsk2 жыл бұрын
@@EugeneSuleimanov ладно врать-то.. Цель видео - раскрутка канала. А показать как паттерн применять не особо получилось=)
@Andrzej39352 жыл бұрын
Большое спасибо
@yuriyalbu45018 жыл бұрын
Можно упростить клиентский код за счет внутренних классов, тогда не придется вводить столько объектов в конструктор Developer и код будет компактнее и понятнее, а так в целом очень хорошо и понятно преподнесено.
@EugeneSuleimanov8 жыл бұрын
Конечо можно. Это же учебный пример, усложнять ещё больше - как мне кажется - не самый лучший вариант в учебных целях.
@yuriyalbu45018 жыл бұрын
Согласен, это был больше ответ для Романа;)
@MartinEden-ps6ld2 жыл бұрын
из видео непонятно самого главного - зачем нужен этот паттер. А разобраться с реализация конечно несложно
@hannahr50377 жыл бұрын
Просто и понятно! Спасибо большое!
@EugeneSuleimanov7 жыл бұрын
Спасибо за отзыв. Рад, что материал оказался полезным :)
@kolob2043 жыл бұрын
Можно ли ответить на собеседовании на вопрос: "Расскажите о полиморфизме в двух словах" : Паттерн Command :-)
@EugeneSuleimanov3 жыл бұрын
Не думаю, потом по шаблонам ещё спрашивать начнут :) Оно нам нужно?)
@kolob2043 жыл бұрын
@@EugeneSuleimanov примерно такой ответ ожидал услышать))
@hannahr50377 жыл бұрын
Кстати, было бы полезно еще иметь ссылку на все ваши примеры на гитхабе:) Спасибо!
@EugeneSuleimanov7 жыл бұрын
Пожалуйста, Анна. ПРимеры есть - в скором времени постараюсь выложить ссылку на видео.
@EugeneSuleimanov7 жыл бұрын
Пожалуйста, Анна. Примеры есть - в скором времени постараюсь выложить ссылку на видео.
@svdminsk3 жыл бұрын
Назначение паттернов - решать проблемы! А не делать красивый и загадочный код. Где здесь проблема и где её решёние??? Без обид, но подавляющее большинство программистов - ананисты. Ментальные ананисты. т.е. выдумывают что-то для удовольствия, но не для конкретной пользы или цели. Поэтому и объяснялщики все из рода Ментальные ананистов, к большому сожалению. При этом сколько раз уже пришлось созерцать одно и то же - разбег на рубль удар на копейку. Хоть ты рыдай. Но каждый стремится сделать уникальное и самое ценное, плодя при этом горы все того же мусора. Конструктивно критика: обозначить цели, упорядочить их по значимости, показать как именно мы достигли каждую конкретную цель и исбавились от сложнорешаемой проблемы. Хотя ум может любоваться бесполезными красотами, тем не менее подсознание критично и практично - если не очевидно, куда это можно применить - фтопку это. По этой причине обучающие материалы не заходят, как бы старательно их не разжевывали - почти всегда разжевывают красивое и бесполезное, хоть и работающее. Надеюсь, этот комментарий поможет автору улучшить свои ролики и сделать их действительно полезными, ценными и уникальными, а автора - успешным
@MrAPPOLON1232 жыл бұрын
мне кажется мало кто решит выкладывать реальные пример полезности из продакшена, а вообще, надо самим искать цели, упорядочивать и где можно это применить, а не ждать, что на каждом курсе тебе это обязаны на блюдце приподнести. Я вот нихуя не понял и пошел дальше по курпицам инфу собирать.
@svdminsk2 жыл бұрын
@@MrAPPOLON123 тогда, было бы очень ценным, почитать Ваш комментарий не в самом начале этого процесса, а по его окончании 😊))
@artkernel72 жыл бұрын
@@svdminsk уже 11 месяцев прошло, вы нашли подобный контент?)
@kislya-tina Жыл бұрын
@@svdminsk так сделай сам как думаешь надо сделать
@jay_msk5 жыл бұрын
Евгений, а как быть в том случае если мы вставляем какую-то конкретную запись? Как корректно передать строку?
@EugeneSuleimanov5 жыл бұрын
Не понял вопрос, к сожалению
@jay_msk5 жыл бұрын
@@EugeneSuleimanov Не отрицаю что мб, я не понял паттерн. Ну если следовать моей логики. Если идет работа с БД, мы выполняем к примеру команду вставки. В мы же должны что-то конкретное вставить. Ту же строку или сериализованный объект. Я не понял как этот паттерн будет применяться на практике
@EugeneSuleimanov5 жыл бұрын
@@jay_msk теперь понял, для данного примера это не применимо.Это можно было бы реализовать, но здесь задача была на высоком уровне (в смысле иерархии, а не качества :) ) показать как работает данный шаблон.
@HowItWorks5 жыл бұрын
@@jay_msk так передавайте мапу параметров и их значений в экзекут метод. Доработайте интерфейс команды. Кто вам запрещает? Тут базовый принцип, а дальше на что способна ваша фантазия и бизнес требования.
@svdminsk3 жыл бұрын
@@HowItWorks паттерны именно для того, чтобы не фантазировать, а применять типовое (т.е. максимально подходящее) решение для типовой задачи. Тем более что описание паттерна как раз и включает эти задачи. И объясняющие для того и ищутся, чтобы учиться на ошибках и опыте других. Ну как бы так должно быть, а на практике да - цели объясняльщиков мутны и загадочны... А описание "высокоуровневой сути" можно и в Википедии почитать
@MrMoshell6 жыл бұрын
Евгений, запишите обзор часто используемых команд в Idea. Очень доставляет как Вы набираете код :)
@vb70385 жыл бұрын
Зачем в каждой конкретной команде база данных?
@EugeneSuleimanov5 жыл бұрын
Не стоит воспринимать данный пример буквально. Задача - на понятном примере показать основные принципы шаблона. Это имеет крайне далекое отношение к реальной работе с БД.
@vb70385 жыл бұрын
Eugene Suleimanov спасибо за ответ, но думаю более понятным будет следующее объяснение, которое я вычитал из книги: "конструктору класса команды, передаётся конкретный объект temp, которым будет управлять команда. При вызове метода execute, получателем запроса будет объект temp"
@HowItWorks5 жыл бұрын
Так в конструкторе передается. Всё норм, вроде.
@zinykov7 жыл бұрын
Здравствуйте, какое ПО вы используете для просмотра диаграммы пакета в конце видео? заранее спасибо за ответ
@EugeneSuleimanov7 жыл бұрын
Добрый день, Денис. У меня стоит Intellij IDEA 16 Ultimate - в Ultimate по умолчанию стоит плагин для просмотра диаграмм. Насколько я знаю, в Community Edition такой функционал отсутствует.
@zinykov7 жыл бұрын
Eugene Suleimanov спасибо за ответ
@EugeneSuleimanov7 жыл бұрын
Пожалуйста, Денис. Обращайтесь.
@ОпельсинОпельсинов Жыл бұрын
напишу пару строку для тех кому тяжело сходу понять developer.insertRecord(); // database.insert(); точно также developer.updateRecord(); // database.update(); точно также developer.selectRecord(); // database.select(); точно также developer.deleteRecord(); // database.delete(); точно также это в DatabaseRunner и public class Developer { Command /*InsertCommand*/ insert; Command /*UpdateCommand*/ update; Command /*SelectCommand*/ select; Command /*DeleteCommand*/ delete; public Developer(Command /*InsertCommand*/ insert, Command /*UpdateCommand*/ update, Command /*SelectCommand*/ select, Command /*DeleteCommand*/ delete) { this.insert = insert; this.update = update; this.select = select; this.delete = delete; } комментарии должны помочь разобраться