Шаблоны Java. Фабричный метод (Factory Method)

preview_player
Показать описание
Изучим паттерн Фабричный метод (Factory Method). Этот паттерн - порождающий шаблон проектирования, определяет стандартный метод создания объекта, не связанный с вызовом конструктора, оставляя решение о том, какой именно объект создавать, за подклассами.

Рекомендации по теме
Комментарии
Автор

Эти лекции - высший пилотаж и непередаваемое удовольствие. Огромное человеческое спасибо, талантливому лектору.

elenakhatmullina
Автор

Как по мне, так наиболее понятные уроки по шаблонам.Респект!!!

АлексейДенега-вб
Автор

Ваня, спасибо большое что учите нас ! )

Markerton
Автор

Пожалуй одно из лучших объяснений этого шаблона!!!

mirkogrey
Автор

Много искал адекватное обьяснение фабричного метода. Большое спасибо.

GlassedUA
Автор

Огромное спасибо за урок! Наконец-то до меня дошло. Самый лучший и понятный пример.

nickcoffeemaniac
Автор

Большое спасибо за подробный видео урок данного шаблона! Только благодаря Вам стало более-менее понятно что к чему!)

Armen_Sarkisian
Автор

это видео дало мне понимание в чем выгода от использования данного паттерна

mohawberel
Автор

Хоспаде, как же доступно! Спасибо за труд!

garmon
Автор

Тоже заметил на 3:23 про "наследование" вмето "реализация".

Здесь понятно, что класс ConcreteCreator
реализует интерфейс Creator и т.д. там, где пунктирная стрелка
.

Отношения между классами:
- при наследовании классов и реализации интерфейсов - IS-A (является), но есть уточнение, что в случае реализации интефрейсов - это скорее IS..., т.к. интерфейсы позволяют описать т.н. протокол, где говориться "Что", а не "Как".
- при ассоциации, агрегации и композиции - HAS-A (является частью)

Если я где-то не точен, ответьте мне - интересно.
- - -
наследование == extends, inheritance
отношение == relationships
реализует, расширяет == implements
контракт, протокол == contract, protocol

voothi
Автор

Супер-удачно пример подобран с часами, спасибо!

integernone
Автор

2:26 "Класс! Просто класс!" -- сук, до слёз)))

John_Smith_Java
Автор

Очень не плохое обьяснение. Но на мой взгляд главная изюминка в применении этого всего заключается как раз в работе с интерфейсами. А именно, мы можем просить фабрику (разные линии конвееров) создать нам товар без использования ифов и кейсов в коде. Другими словами мы уходим от гигантской вереницы if ... else в коде. В этом вся соль. Об этом как то не сказано ничего.

HowItWorks
Автор

Фабричный метод -это статический метод который возвращает экземпляр классса

progtest
Автор

Просто и Понятно, спасибо большое!!!!

Gorbatov
Автор

У Гранда написано, что курсивом выделяются абстракные классы. А интерфейсы -- просто стереотипом "interface".

John_Smith_Java
Автор

Непанятна. Все что делает "Завод производитель" это производит часы (в данном примере) разного типа. Смысл менять тип "завода производителя", если можно с теми же усилиями заменить тип часов, а не заменять тип завода.

dmytro_bro
Автор

зачем ради неизменности трёх строк кода столько обслуживающего кода? почему бы по передаваемому имени часов не получать именно часы, а не их производителя?

А какая разница? Любой большой проект - есть набор маленьких, взаимосвязанных между собой. По-моему скромному мнению, получение конкретного продукта по его уникальному имени - это более прозрачный и понятный программисту любого уровня способ реализации шаблона "фабричный метод".

ИТ-территория
Автор

он неправильно клиентский код реализовал. там должен быть метод который принимает интерфейс WatchMaker, а уже в рантайме туда приходит конкретная реализация этого интерфейса и создает конкретные часы. а то что он в мейне написал можно было и на конструкторах сделать

kandidat
Автор

Есть вопрос. Как в данном случае избавится от гирлянды из if в getMakerByName ? Допустим у нас сотни часов. Гирлянда в сотни if не очень красивая как по мне. Что можно сделать?

HowItWorks