чувствуется уровень. 90% остальных видео реально рядом не валялись - все четко, по делу, не отвлекаясь на простые вещи. Респект
@Тралфейс Жыл бұрын
Это сарказм?
@arctic9328 Жыл бұрын
ты идиот? @@Тралфейс
@IbnSabilAbuAbdullahАй бұрын
@@Тралфейс Да нет. Он неплохо показывает основой принцип
@АндрейКазанцев-я2е4 жыл бұрын
Для тех кто не понял, вот вам основное различие: Фабричный метод используется для создания только одного продукта Абстрактная фабрика - это создание семейств связанных или зависимых продуктов.
@arahnid_9844 Жыл бұрын
Спасибо, я как раз это упустил)
@glookeemaska133 Жыл бұрын
Легенда
@rufat854 жыл бұрын
я не знаю как, кому, а мне данный формат видео лучше заходит. Это на основе древнего и первобытного, делай как я. Темп отличный. Лишнего нет. Да и всяких слов паразитов минимум.
@EugeneSuleimanov4 жыл бұрын
Спасибо за отзыв!
@БулатАшимов-и3с3 жыл бұрын
Самое толковое и дельное объяснение абстрактных фабрик... Без воды и бессмысленного прыгания у доски и калякания всяких идиотских картинок. Почти парное программирование. Огромный респект
@AdiletZhanysbay3 жыл бұрын
Очень понятно когда он показывает разницу паттернов. Уважуха братан✊
@Lineage2GF6 жыл бұрын
Столько всего прочел пересмотрел и никак не понимал до просмотра этого видео. Спасибо !
@faniskhalikov97363 жыл бұрын
Спасибо за качественный урок) Отличный материал для начинающих и не только, лучше начинаешь понимать необходимость применения интерфейсов.
@EugeneSuleimanov3 жыл бұрын
Спасибо :)
@СэмФишер-х4д3 жыл бұрын
отличный урок. четко и понятно показан шаблон и как работает. спасибо!
@elpirato54284 жыл бұрын
Хорошо когда без ошибок всю информацию сразу в правильном порядке преподносят, сразу все в памяти откладывается.
@IbnSabilAbuAbdullahАй бұрын
Спасибо! Годное видео! На обычной фабрике пример был не очень, и мне пришлось посмотреть другой ролик по этой теме)), но про абстрактную фабрику - определённо топ)
@EugeneSuleimanovАй бұрын
@@IbnSabilAbuAbdullah спасибо за отзыв!
@Spothoax Жыл бұрын
Уровень подачи и понимания шаблонов 10 из 10. Объяснить проще уже не получится ни у кого))
@anymko39314 жыл бұрын
Очень нравится как звучит клава, обычно звук ацтой, а тут я бывает заслушиваюсь больше над звуком клавы
@jarag93534 жыл бұрын
Утька моя
@anjelomanoranjan10 ай бұрын
Браво, Женя! Крутое видео. Спасибо!
@EugeneSuleimanov10 ай бұрын
Спасибо за поддержку!
@Wanderer_D3 жыл бұрын
смотрю 4 видео. Объяснения четкие и внятные, без всяких "эээ.. ммм" и т. д.
@Maratreason8 жыл бұрын
Супер, тоже респект!!! Все четко и понятно.
@kostingy Жыл бұрын
Либо я что-то не так понял, либо здесь и в предыдущем видео не показана полная суть и смысл данных шаблонов и нарушен принцип сухого кода. Имхо у нас должен быть некий объект команды (с её типом и полями разраб тестер пм), а наша фабрика как раз генерирует команды и подсовывает в эти поля правильные сущности, завязанные на тип проекта. И в конце должен быть общий мэйн, где мы получаем две команды под проект каждого типа, а потом вызываем статик метод команд "делать проект"... В этом и есть смысл абстрактных фабрик - абстракция и сокрытие генерации правильных типов объектов, что бы в мэйне осталась только бизнесс-логика.
@JGolt2 жыл бұрын
Спасибо за урок! Жаль, что не показали UML диаграмму, обычно ее переношу в конспект и по ней потом ориентируюсь! У меня IDEA CE, в ней не посмотреть такое.
@funenglish81283 жыл бұрын
все круто и понятно, но было бы круто если вы бы на примере показали почему нужно использовать данный паттерн и что может случится если его не использовать
@johndoedoejohn Жыл бұрын
Дуже круті відео, дякую. :) Moжна також Project заімплементувати як Фабричний метод, цим самим інкапсулювати код від клієнта: public abstract class Project { protected String type; protected Developer developer; protected Tester tester; protected ProjectManager manager; public void startProject() { setUpTeam(); // Фабричний метод з субкласу System.out.println(String.format("Creating %s project. . .", type)); developer.writeCode(); tester.testCode(); manager.manageProject(); System.out.println(" "); } protected abstract void setUpTeam(); // Фабричний метод буде в субкласі } public class JavaProject extends Project { @Override protected void setUpTeam() { type = "Java"; AbstractFactory factory = new JavaProjectFactory(); developer = factory.createDeveloper(); tester = factory.createTester(); manager = factory.createProjectManager(); } } public class Company { public static void main(String[] args) { Project webProject = new WebProject(); webProject.startProject(); Project bankProject = new JavaProject(); bankProject.startProject(); } }
@EugeneSuleimanov Жыл бұрын
Дякую за відгук!
@hannahr50377 жыл бұрын
Не подскажите, в чем разница этих двух фабрик от паттерна Простой Фабрики? В целях и практическом применении. Спасибо!
@EugeneSuleimanov7 жыл бұрын
Абстрактная фабрика, грубо говоря - попытка создать группу фабрик.
@alexkhonko41155 жыл бұрын
в простой фабрике мы создаём все свои классы в одном методе. Фабричный метод говорит "пацаны, а давайте мы как нормальные люди вынесем эти кусочки кода отдельно, чтобы это дело можно было легко найти и проще читать", поэтому мы взываем на к фабрике, которая знает про всё, а к фабрике, которая знает, как создать конкретно нужный вам обьект. Абстрактная фабрика - совсем другая птица
@Andrzej39352 жыл бұрын
Большое спасибо, очень доступно
@EugeneSuleimanov2 жыл бұрын
Спасибо за отзыв!
@goodman21562 жыл бұрын
А если в другом проекте мне нужен новый разработчик (например, сисадмин), а в старых фабриках ничего не менять, какой паттерн тогда применять? Или можно как-то модифицировать этот паттерн?
@serhiisadrytskyi29706 жыл бұрын
Евгений, спасибо за полезное видео. Скажите, что имелось в виду под "добавлять любого разработчика в любую команду"(фраза в конце). - если вместо простого возвращения новых сущностей в переопределениях get-методов класса WebsiteTeamFactory(к примеру) написать логику выбора или же как в прмиере с "Фабрикой" добавить статичный метод который будет принимать строку и возвращать тип фабрики? Cпасибо.
@Vod-b4n2 жыл бұрын
Так эта фабрика выдает набор обэктов - сгруппировали создание комманды в один класс и редактировать команду можно из одного места - ? В этом суть?
@michaelroyf47663 жыл бұрын
отлично!
@ВикторДемихов-ц9о5 жыл бұрын
Прекрасная подача информации. Платные курсы и рядом не стояли..
@EugeneSuleimanov5 жыл бұрын
Спасибо за отзыв, Виктор
@ВикторДемихов-ц9о5 жыл бұрын
@@EugeneSuleimanov всегда, пожалуйста. Не смотря на то, что программирую не первый год, паттерны как-то обходил стороной. Вот как-то пришлось заняться на днях. Можно и самому осилить, но с такими то примерами обучение становится комфортным и хочется это озвучить..) А причина проста. Такие каналы должны быть в ТОПе.
@yanlevchenko38703 жыл бұрын
@@ВикторДемихов-ц9о +++
@SiMoN-hk1jf4 жыл бұрын
Почему в классе BankingTeamFactory когда оверайдим метод getDeveloper пишем просто return new JavaDeveloper и не приводим к типу (Developer)?
@regondaadnoger40284 жыл бұрын
Потому что JavaDeveloper уже реализован по интерфесу Developer
@ЕвгенийКарпов-п3д3 жыл бұрын
Гуглить: upcast
@ПоликарпГазов-ы1м5 жыл бұрын
Почему называется абстрактная фабрика, когда это интерфейс ?
@lexxx19945 жыл бұрын
Так называется паттерн. Мы создали интерфейс фабрики, но т.к. интерфейс на самом деле - это полностью абстрактный класс, у которого все методы абстрактные (если мы говорим о Java), то можно сказать, что у нас есть какая то "абстрактная фабрика объектов", и реализаций этой "абстрактной фабрики" может быть сколько угодно.
@rufat854 жыл бұрын
@@sergeyinyakin9730 в том что тут мы выбираем фабрику под проект. А там мы выбирали фабрику под язык программирования. Как мне кажется разница в уровнях абстракции.
@ЕвгенийКарпов-п3д3 жыл бұрын
@@sergeyinyakin9730 дело не в абстракции как части языка, а в абстракции, как понятия. Ключевое слово abstract здесь совершенно не причем.
@ЕвгенийКарпов-п3д3 жыл бұрын
@@sergeyinyakin9730 значит, растёшь) когда поймешь, что уже не растёшь - пора менять профессию.
@alexanderspreys176 Жыл бұрын
А что если в команде нет тестера? Возвращать эксепшен? Вроде как плохая практика.
@EugeneSuleimanov Жыл бұрын
Тестирование и эксепшн - несколько разные вещи. Исключение - это просто способ обработки ситуаций. А QA - это оценка качества продукта.
@volodya-nrg5 жыл бұрын
все таки не понятно чуть-чуть ... надо пристально следить за мыслью
@СергейСтепанов-ч4б9т7 жыл бұрын
Спасибо!
@EugeneSuleimanov7 жыл бұрын
Пожалуйста, Сергей.
@jetbrain91155 жыл бұрын
Спасибо! А UML диаграмму забыли(
@EugeneSuleimanov5 жыл бұрын
Да, действительно ) Увидел только посое вашего комментария. Спасибо, что обратили внимание
@Novichek55 Жыл бұрын
не понимаю я предназначение этих Шаблонов, ну создал бы я этих разработчиков и тестировщиков в методе mai() без Фабрики напрямую, что от этого бы изменилось??? Зачем нужна Фабрика ???🙃
@stealth-3508 ай бұрын
Смысл в том, у тебя получается гибкий код, поведение которого ты можешь настраивать при запуске, без переделки самого кода. Например, вместо отдельных классов со своими мейнами, можно было бы в основном мейне сделать switch, который бы принимал строку из args из параметров мейна и по ней бы вызывал нужную фабрику, которая бы уже собирала тебе нужную команду. Т.е. тебе для изменения поведения приложения достаточно запустить его с нужным параметром. При этом такую абстрактную фабрику легко расширять или изменять, добавляя новые команды, например. Если бы ты всех нужных сотрудников команды создавал бы через new() в мейне, то тебе бы было тяжело настраивать повделение приложения и еще сложнее его как-то изменять в дальнейшем. На практике такое может применяться, например, при описании разных конфигураций подключения к БД. Если все сделано правильно, например, по такому шаблону, то тип и параметры подключения у тебя могут задаваться в файле конфигурации, куда инсертятся через переменные окружения. И чтобы переключиться с одной БД на другую, тебе достаточно изменить значения в переменных окружения и перезапустить приложение. А в твоем случае тебе пришлось бы лезть в код и менять нужные объекты на новые во всех нужных местах, потом коммитить и деплоить изменения. И это не круто :)
@СергейПанаев-ы3у10 ай бұрын
на php можно написать сайт, на java можно написать фабрику php разработчиков...
@EugeneSuleimanov10 ай бұрын
И фабрику фабрик разработчиков…
@Baannia7 жыл бұрын
красивый и чоткий код
@AndreyDeveloper8 жыл бұрын
Все хорошо. Только опечатка (аСБтрактная фабрика).
@EugeneSuleimanov8 жыл бұрын
Спасибо за сигнал. Исправил.
@AndreyDeveloper8 жыл бұрын
Да это тебе спасибо. Две книги прочитал и не вдуплял (и википедию тоже). А сейчас хоть какая-то ясность настает.
@neotremor50542 жыл бұрын
нифига ты быстро печатаешь...Пианист что ли?
@АлександрУсенко-ж8б2 жыл бұрын
Не очень понятна практическая применимость все равно
@Valerii075 жыл бұрын
Мдя я абстрагировался когда это все увидел, куча когда чтоб просто получить айди юзера, кажется все еще более запутанным чем простые ссылки к классам, абстрагируешься на каждом шаге то интерфейс то промежуточный класс чтоб только передать пас другому, еще больший клубок для распутывания, чем раньше... а так все хорошо объясняется...
@HyperTextTransferProtocol-l6m3 жыл бұрын
В сложных проектах это поможет
@pie4928 Жыл бұрын
Зачем это учить ? Ведь можно и без них нормально разрабатывать приложения...
@EugeneSuleimanov Жыл бұрын
Да, конечно, это возможно, но местами при работе с большими системами это неудобно. Особенно, если не используются фреймворки, где эти шаблоны реализованы и используются "под капотом".
@alexanderryabinin28844 жыл бұрын
удар по клавишам будто показывает какую-то неприязнь, непорядок с нервами
@EugeneSuleimanov4 жыл бұрын
Это я самоутверждаюсь и пытаюсь доминировать, хотя бы над клавиатурой. Это наполняет меня ощущением власти :)
@Валерий-н6м6г3 жыл бұрын
@@EugeneSuleimanov Творчество не иссякаемое : хочу творю, а хочу - вытворяю! ))