@@MrAbad202 да не, это просто нужно было что-то по быстрому для замыкания пищевых цепочек замутить, взяли часть со старого проекта, а потом забыли и в прод залили... Вроде работает, не стали трогать.
Объяснил понятно . Главное придумать куда это прикрутить. Я понял что это нужно для будущего , чтобы можно было внести изменения и не затронуть работу программы.
Фабрика - это класс в котором задается фабричный метод создания продукта, который определяет стандартный вариант поведения. Затем он делегирует подробности создания подклассам. В принципе клиент не обязательно должен вызывать непосредственно метод "СоздатьМебель" Клиент может вызвать метод фабрики, фабрика выполнит стандартные действия - например, создаст накладные. А потом уже сама вызовет"СоздатьМебель" чтобы получить стол или стул.
Привет из 2019го, огромное спасибо за разьяснение, в нашей студенчиской методичке все слишком заумно описано, а ваше видео сделано гараздо более доступно для понимания.
не совсем понял, с таким же успехом в такой матод может передаваться не фабрика и не стул или стол , но Мебель. Тогда мы сможем вызвать метод someMethod(мебель) с аргументами someMethod(стул) или someMethod(стол) и цель будет достигнута. Так же мебель может запросто быть интерфейсом, что еще более упростит работу, а стало быть пример не до конца объясняет, зачем нужна именно фабрика.
Плюс ко всему сказано, что класс МебФаб абстрактный и не может иметь свой объект, тогда как мы засовываем его в качестве аргумента в функцию foo(МебФаб МФ)
Потому что этот шаблон все интерпретируют как угодно, но только не так как это задумывалось в GoF. Метод создМебель должен вызываться внутри МебФаб. То есть в МебФаб описывается некий алгоритм и внутри него вызывается метод создМебель. Кароче то что он пишет в функции foo, должно быть в МебФаб. Тогда всё очевидно. Это родственный шаблон к template method. В английской вики есть прекрасный пример реализации MazeGame где показывается верная интерпретация этого шаблона, но к сожалению там же полно и разных неверных вариантов не имеющих никакого отношения к GoF.
@@HerrHoldem Вики (рус. версия) Фабричный метод, примеры - "PHP5 современный вариант". Выполнена реализация фабричного метода в классе Animal (т.е. в Мебели). А дальше реализация без фабричного метода $class = "Lion"; (new $class)->voice(); Фабричный метод, кроме красивой записи нечего не дает.
Приятно слушать. Заметил, что Владимир не не делает разницы и не отдает предпочтение какому-либо языку программирования или операционной системе. По-моему, это признак мудрого человека.
+Stas Brunkovsky О, поверьте, у меня есть предпочтение и языка и операционной системе. Просто здесь я объясняю вещи, связанные с программировании вцелом.
+Vladimir Mozhenkov Ну да, как и у всех нас. Но не ставите на этом акцент. И, как мне показалось, уважительно относитесь к пользователям всех операционных систем и языков программирования. Благодаря тому, что рассказываете про общее, а не частное.
@@ВладЯковлев-ш5з Володя сказал, что классы стул и стол обычно прячут, поэтому ты не сможешь эти объекты передать. Вот это и осталось непонятным в видео.
@@ДмитрийПономарев-д1ю От запросившего, например. От настроек фабрики. От контекста зависит. Если тебе нужно создать пайплайн данных - тебе нужно будет лишь вызвать фабрику, все остальные обходимые для пайплайна объекты она создаст сама. Фабрик много, применений много. Читай "паттерны проектирования" Банды Четырёх.
6:20. Не очень понятно, почему в фабричный метод (foo в видео) нельзя передать непосредственно класс объекта, чтобы он создал и вернул объект этого класса. Зачем передавать еще один класс, который внутри будет делать то же самое? То есть на примере в видео передать в функцию foo не МФ Стульев, а Стул? Я пишу на Пайтоне и у нас классы это тоже объекты, и их можно передавать в функции. Возможно, что на других языках такой возможности нет, поэтому необходимо создавать объект фабрики?
Я думаю тема не раскрыта. Я не понял ничего зачем мне на этапе компиляции не понимать какого типа создаётся обьект. Надо реальный пример рассматривать в коде видимо
@@kvantstudio это то как раз понятно) допустим по логике программы пользователь должен выбрать создать стул или стол - на этапе компиляции мы не знаем выбор пользователя. И таких вариантов множество.
@@kvantstudio Сила полиморфизма в том, что вы можете менять поведение объектов прямо в рантайме. Кому интересно можете загуглить "Динамическая диспетчеризация методов".
В чем разница между Фабричным методом и Dependency Injection? При инъекции зависимостей мы тоже передаем в конструктор класса A неизвестный объект B, реализующий определённый интерфейс. А потом можно исполнять в этом первом классе A сколько угодно методов A->foo1(), A->foo2(), ..., A->fooN(). Получается. что инъекция зависимостей это более сложный вариант фабричного метода?
очень хорошо. Лично мне было бы как бонус реализация на Си примеров использования излагаемых Вами паттернов. Это не потому что не понятно через диаграммы и общие обозначение, это потому что через код лучше видно их возможное применения на практике. Спасибо за урок.
Вы не создаёте фабричный метод если вы не знаете, что вы будете создавать. Вы понимаете, что вам надо что-то создать, и что обычный конструктор вам не подходит, и фабричный метод пишется для того, чтобы сделать то, что вам было нужно.
ээээх видосик не дожат до конца, я ждал развязки с той функцией\классом который "что бы не дублировать" вмял в себя методы фабрики. интересно было увидеть как манипулировать это функцией (аргументами?) типо foo(стулья) ? а как в коде указать что функция через фабрику должна стулья создавать?
и о почему нельзя костыль использовать, на аргумент подавать номерной int нужного типа, а в функции по кейсу указывать какого типа создать объект?)))))))))))))))))))
Надуманный пример, параллельное наследование вредно само по себе. Обычный статический метод возвращающий базовый класс и динамически решает instants какого типа создавать, например читая конфигурационые файлы. Ну или все-таки создать класс фабрику но не наследовать её, класс нужен просто для того если принятие решения по созданию Instants-а более сложное и не помещается в один метод. А так как товарищ предлагает это убивает всякую динамику, какую фабрику передали то и будет всегда создаваться. Смысл?
virtual - это то что делает метод виртуальным а абстрактным его делает abstract ))))) как-то так. Есть разница между виртуальным и абстрактным. И не поле а метод или проперти. Поле не может быть абстрактым. Учите матчасть.
Спасибо большое за ваш труд! У меня такой вопрос: Зачем создавать классы "СтулФаб" и "СтолФаб", почему не создать соответсвующие методы ("создатьСтул" и "создатьСтол") в классе "МебФаб"??? Например как в уроке про абстракную фабрику методы "создатьОкно" и "создать Меню".
+Vitalii Sydorenko Это зависит от того, как вы собираетесь создавать эти объекты. Иногда один участок кода будет создавать Столы, а другой Столья, и если они работают совершенно поразному, то почему они должны использовать ту-же самую фабрику? То есть в этом случае здесь вопрос именно уровня абстракции.
Хмм. Мы задаем ему создать подкласс, но не знаем какой он создаст. Разве программирование не точная вещь, и не задается разработчиком всё всё всё? Т.е мы не знаем какой подкласс он создаст? Он разумный и сам выбирает? Я как новичок не понимаю просто. Там ни рандома, ни "шанса по процентам на то и на то". Я так понимаю, если нам надо создать подкласс. он не создаст его, если мы не укажем какой. Я пока понял, что если у кофемашины закинуть монетку и нажать заказать кофе, то он может выдать люой. а не тот, который мы выюерем нажав на кнопку.
И где здесь метод, который конкретно фабричный ? Это ф-я, которая принимает параметром фабрики, или это методы фабрик ? Хорошо бы акцентировать. Мне этот ролик понравился (лайкнул), но я хочу чтобы мне ткнули пальцем в то, что здесь называется фабричным методом.
Чёт не зашло вообще.. ФМ нужен тогда, когда нам надо создать объект дочернего класса, но какой объект будет создаваться - мы не знаем. А зачем тогда создавать объект, который не известен на выходе? Что потом с ним делать? А если создаться объект не тот, что надо? Или мы не ожидали ничего конкретного на выходе, а просто - одно из? Ни вкисаю в смысл. Пойду смотреть/читать дальше эту тему.
Как это "создастся не тот" =) если ты передаешь объект конкретной фабрики в метод =) просто он должен реализовывать интерфейс МФ. Просто это сделано для того чтобы не перекидывать в методы гору разных объектов, вместо этого просто кинуть туда 1 фабрику которая даст тебе любой из этих объектов еще и динамически.
До момента выполнения программы мы н е знаем. какой вид объекта нам по надобится создать ( B l oggsAppt E ncode r или MegaApp t Encode r } . • Мы должны иметь возможность достаточно просто добавлять новые типы объектов (например. следующее требование бизнеса - поддержка протокола SyncML}. • Каждый тип продукта связан с контекстом. который требует других специ ализированных операций ( g e t H e a d e r T e x t ( ) . ge t Fo o t e r T e x t ( ) ) . Кроме того. нужно отметить, что мы используем условные операторы. и мы уже видели, что их можно заменить полиморфизмом. Шаблон Factory Method позволяет использовать наследование и полиморфизм, чтобы инкапсулировать создание кон кретных продуктов. Другими словами, для каждого протокола создается свой под класс типа CommsMa nage r , в котором реализован свой метод g e t App t Encode r ( )
Ну , для примера, пользователь выбирает фильтр для ретуширования в "Фотошопе" . Следовательно он его будет выбирать в рантайме и создаваться он будет в рантайме.
Сам Иисус учит нас паттернам :D
а после идет гулять по воде
Аминь
=)))) Я первым делом так и подумал, Иисус тоже кодит!
@@__alexfox__, а утконос -- это баг?
@@MrAbad202 да не, это просто нужно было что-то по быстрому для замыкания пищевых цепочек замутить, взяли часть со старого проекта, а потом забыли и в прод залили... Вроде работает, не стали трогать.
Я люблю этого парня. Просто шикарное объяснение. Спасибо большое.
Да, _Уровень "красный"!
Потрясающе, почему не нахожу такого толкового объяснения нигде?! Большое спасибо
Полнедели понять не мог практическое применение. Спасибо. Огромное спасибо
Самый лучший преподаватель, каких только уроков я не смотрел, всегда самые понятные и доходчивые у Volodya Mozhenkov
+
Батюшка преподает дизайн паттерны ? Хмм это же офигенно!
Это не батюшка, это Шан-Тсунг. Глаза видел?
Не знаю почему, но я смеялся пол часа с этого комментария )))))))))))
Батюшка не батюшка, а разложил по полочкам всё как боженька
@@sergey-shalaev Ага, кашерно прям.
@@sergey-shalaev Бредово разложил если честно, почитайте мой комент.
Объяснил понятно .
Главное придумать куда это прикрутить.
Я понял что это нужно для будущего , чтобы можно было внести изменения и не затронуть работу программы.
"Раз уж это русский язык, назову переменную Ж" - это было ОООЧЕНЬ многозначительно. В оценке ситуации с Вами полностью согласен)
🤣🤣🤣🤣👍
😁, тонко
Наконец то я нашел видеоуроки в которых объясняют паттерны понятным человеческим языком. Одного просмотра хватило чтобы всё стало ясно
А мне нет :с
Фабрика - это класс в котором задается фабричный метод создания продукта, который определяет стандартный вариант поведения. Затем он делегирует подробности создания подклассам. В принципе клиент не обязательно должен вызывать непосредственно метод "СоздатьМебель" Клиент может вызвать метод фабрики, фабрика выполнит стандартные действия - например, создаст накладные. А потом уже сама вызовет"СоздатьМебель" чтобы получить стол или стул.
Привет из 2019го, огромное спасибо за разьяснение, в нашей студенчиской методичке все слишком заумно описано, а ваше видео сделано гараздо более доступно для понимания.
какой курс ?
Отлично объясняете. Расскажите об использовании фабричного метода для вывода views в MVC проектах.
Первый раз слушала-не поняла. Потом почитала в статье про фабричный метод с примерами и второй раз просмотрев видео-все было понятно
Спасибо за отличный урок, что такое фабрика знал давно, а вот зачем она нужна не совсем понимал. Теперь все предельно ясно.
Валерий Шинкаренко Видео про Абстрактную Фабрику уже выложил. Сейчас через 30 минут ещё будет про Простую фабрику. Тоже посмотрите.
ua-cam.com/video/_5f2zs-8e04/v-deo.html
Огромная вам благодарность, святой человек за свет..
6 лет назад вышел ролик, но полезно и сейчас
Круто. Экстравагантно, но доходчиво!
Спасибо огромное за такое чёткое объяснение)
не совсем понял, с таким же успехом в такой матод может передаваться не фабрика и не стул или стол , но Мебель. Тогда мы сможем вызвать метод someMethod(мебель) с аргументами someMethod(стул) или someMethod(стол) и цель будет достигнута. Так же мебель может запросто быть интерфейсом, что еще более упростит работу, а стало быть пример не до конца объясняет, зачем нужна именно фабрика.
Плюс ко всему сказано, что класс МебФаб абстрактный и не может иметь свой объект, тогда как мы засовываем его в качестве аргумента в функцию foo(МебФаб МФ)
@@yalauitarik поскольку СтулФаб и СтолФаб наследники МебФаб, то в foo(МебФаб мф) ты можешь подставлять СтулФаб и СтолФаб
И как это должно выглядеть на практике? Хотите в Мебель засунуть реализацию создания другой мебели? Это не самое лучшее решение.
Потому что этот шаблон все интерпретируют как угодно, но только не так как это задумывалось в GoF. Метод создМебель должен вызываться внутри МебФаб. То есть в МебФаб описывается некий алгоритм и внутри него вызывается метод создМебель. Кароче то что он пишет в функции foo, должно быть в МебФаб. Тогда всё очевидно. Это родственный шаблон к template method. В английской вики есть прекрасный пример реализации MazeGame где показывается верная интерпретация этого шаблона, но к сожалению там же полно и разных неверных вариантов не имеющих никакого отношения к GoF.
@@HerrHoldem Вики (рус. версия) Фабричный метод, примеры - "PHP5 современный вариант". Выполнена реализация фабричного метода в классе Animal (т.е. в Мебели). А дальше реализация без фабричного метода $class = "Lion"; (new $class)->voice(); Фабричный метод, кроме красивой записи нечего не дает.
14:51 даа! - это интересно, даа! - это нужно! даа! - примеры на с++ :)
Спасибо за объяснение, лекция помогла
Приятно слушать. Заметил, что Владимир не не делает разницы и не отдает предпочтение какому-либо языку программирования или операционной системе. По-моему, это признак мудрого человека.
+Stas Brunkovsky О, поверьте, у меня есть предпочтение и языка и операционной системе. Просто здесь я объясняю вещи, связанные с программировании вцелом.
+Vladimir Mozhenkov Ну да, как и у всех нас. Но не ставите на этом акцент. И, как мне показалось, уважительно относитесь к пользователям всех операционных систем и языков программирования. Благодаря тому, что рассказываете про общее, а не частное.
Собственно, а как потом определяется тип мебели? Неполный урок, так как не описана проблема. Она, как бы констатируется, но не обосновывается.
Наследование учи. Какой объект передадут , тот и выберет компилятор
@@ВладЯковлев-ш5з Володя сказал, что классы стул и стол обычно прячут, поэтому ты не сможешь эти объекты передать. Вот это и осталось непонятным в видео.
@@Лжеученый_Юра Ты не можешь их создать НАПРЯМУЮ, это сделает за тебя фабрика. В этом и смысл.
@@AlexCSharp откуда фабрика узнает, что именно нужно создать?
@@ДмитрийПономарев-д1ю От запросившего, например. От настроек фабрики. От контекста зависит. Если тебе нужно создать пайплайн данных - тебе нужно будет лишь вызвать фабрику, все остальные обходимые для пайплайна объекты она создаст сама. Фабрик много, применений много. Читай "паттерны проектирования" Банды Четырёх.
6:20. Не очень понятно, почему в фабричный метод (foo в видео) нельзя передать непосредственно класс объекта, чтобы он создал и вернул объект этого класса. Зачем передавать еще один класс, который внутри будет делать то же самое? То есть на примере в видео передать в функцию foo не МФ Стульев, а Стул? Я пишу на Пайтоне и у нас классы это тоже объекты, и их можно передавать в функции. Возможно, что на других языках такой возможности нет, поэтому необходимо создавать объект фабрики?
Я думаю тема не раскрыта. Я не понял ничего зачем мне на этапе компиляции не понимать какого типа создаётся обьект. Надо реальный пример рассматривать в коде видимо
@@kvantstudio это то как раз понятно) допустим по логике программы пользователь должен выбрать создать стул или стол - на этапе компиляции мы не знаем выбор пользователя. И таких вариантов множество.
@@kvantstudio Сила полиморфизма в том, что вы можете менять поведение объектов прямо в рантайме. Кому интересно можете загуглить "Динамическая диспетчеризация методов".
Супер!!! Спасибо!
Володя спасибо!
Крутое видео, крутой канал. Как будет время все пересмотрю
Самое лучшее объяснение!
Круто объясняешь, лайк
Спасибо за видео, Владимир. Надеюсь вы продолжите снимать ролики о паттернах.
Ох уж Этот взгляд :-) Кашпировский нервно курит в стороне.
А я то думал, куда Паук из коррозии подался? )))
В чем разница между Фабричным методом и Dependency Injection? При инъекции зависимостей мы тоже передаем в конструктор класса A неизвестный объект B, реализующий определённый интерфейс. А потом можно исполнять в этом первом классе A сколько угодно методов A->foo1(), A->foo2(), ..., A->fooN().
Получается. что инъекция зависимостей это более сложный вариант фабричного метода?
Хотелось бы увидеть пример на PHP
Если видео смотреть без звука, можно подумать, что инженер мебельной фабрики объясняет слесарям как правильно собирать стулья и столы.
впрингципе так и есть
Класс, всё доступно и понятно! Спасибо!
очень хорошо. Лично мне было бы как бонус реализация на Си примеров использования излагаемых Вами паттернов. Это не потому что не понятно через диаграммы и общие обозначение, это потому что через код лучше видно их возможное применения на практике. Спасибо за урок.
Предлагаю в следующий раз создавать барную стойку и барный стул.
Меня много раз спрашивали, как меня зовут, и вот теперь я говорю во всеуслышание: меня зовут Володя! xDD
Мне понравился видос!
шаблоны можно запрограммировать на динамическое поведение… в компайл-тайме
Отличное видео
Ахреневаю каждый раз когда натыкаюсь на его видео xd
Где находится сам код результата выбора пользователем, это ведтка If'ов или что то ещё?
А как мы знаем какой класс создавать? В функции будут какие то условия?
Вы не создаёте фабричный метод если вы не знаете, что вы будете создавать. Вы понимаете, что вам надо что-то создать, и что обычный конструктор вам не подходит, и фабричный метод пишется для того, чтобы сделать то, что вам было нужно.
@@VladimirMozhenkov Теперь понятно, огромное спасибо!!!
ээээх видосик не дожат до конца, я ждал развязки с той функцией\классом который "что бы не дублировать" вмял в себя методы фабрики.
интересно было увидеть как манипулировать это функцией (аргументами?) типо foo(стулья) ? а как в коде указать что функция через фабрику должна стулья создавать?
и о почему нельзя костыль использовать, на аргумент подавать номерной int нужного типа, а в функции по кейсу указывать какого типа создать объект?)))))))))))))))))))
Спасибо Вам
Моднейшие паттерны тащемта. Чад кутежа, угар!
А в дочерних классах метод с приставкой override или я не о том?
Да,реализацию посмотреть было бы круто!
Спасибо, круто!
Надуманный пример, параллельное наследование вредно само по себе. Обычный статический метод возвращающий базовый класс и динамически решает instants какого типа создавать, например читая конфигурационые файлы. Ну или все-таки создать класс фабрику но не наследовать её, класс нужен просто для того если принятие решения по созданию Instants-а более сложное и не помещается в один метод. А так как товарищ предлагает это убивает всякую динамику, какую фабрику передали то и будет всегда создаваться. Смысл?
Спасибо большое!
Virtual - поле делающее класс абстрактным. Плюс в дочерних классах, для переопределения, надо использовать ключ. слово override
virtual - это то что делает метод виртуальным а абстрактным его делает abstract ))))) как-то так. Есть разница между виртуальным и абстрактным. И не поле а метод или проперти. Поле не может быть абстрактым. Учите матчасть.
11.37 ты обращаешься к методу абстрактного класса, у которого нет реализации?
7:55 норм затролел
Очень полезный урок. Я как раз изучаю паттерны более подробно. Но я не могу найти плейлист с паттернами на Вашем канале. Можете предоставить ссылку?
Спасибо, очень помогло
А если для создания различных подклассов, нужны разные входные переменные?
Христос воскрес
да, интересен пример на с++
Годно, абсолютно понятно
а могли бы сделать видео о реализации фабричного метода?! с++ или же с#
Хорошая тема
никак не пойму, про что еще в этом видео сказано помимо чисто динамического полиморфизма. Но лайкос поставил)
Верите ли вы в джаву?
Извините, вы сказали "Но можно создать шаблон" я не совсем понял что за шаблон?
Вы уже скорее всего разобрались, но отвечу для остальных: имеется в виду template/generic (в разных языках по-разному называется)
создай плейлист по паттернам хотя бы, а то не нашёл больше ничего
А это нормально что я с 1раза понял что и зачем? Обычно часов пять пялюсь в монитор в полном очяянии и не понимании.
Спасибо!
Спасибо большое за ваш труд! У меня такой вопрос: Зачем создавать классы "СтулФаб" и "СтолФаб", почему не создать соответсвующие методы ("создатьСтул" и "создатьСтол") в классе "МебФаб"??? Например как в уроке про абстракную фабрику методы "создатьОкно" и "создать Меню".
+Vitalii Sydorenko Это зависит от того, как вы собираетесь создавать эти объекты. Иногда один участок кода будет создавать Столы, а другой Столья, и если они работают совершенно поразному, то почему они должны использовать ту-же самую фабрику?
То есть в этом случае здесь вопрос именно уровня абстракции.
Я уже всё понял. Спасибо!
Хмм. Мы задаем ему создать подкласс, но не знаем какой он создаст. Разве программирование не точная вещь, и не задается разработчиком всё всё всё? Т.е мы не знаем какой подкласс он создаст? Он разумный и сам выбирает? Я как новичок не понимаю просто. Там ни рандома, ни "шанса по процентам на то и на то". Я так понимаю, если нам надо создать подкласс. он не создаст его, если мы не укажем какой. Я пока понял, что если у кофемашины закинуть монетку и нажать заказать кофе, то он может выдать люой. а не тот, который мы выюерем нажав на кнопку.
Простите, а это случайно не полиморфизмом называется?
+Алексей Вороненко Без полиморфизма фабричный метод работать не будет, но назвать фабричный метод полиморфизмом будет неверно.
Купи себе большую дошку наконец то
И где здесь метод, который конкретно фабричный ? Это ф-я, которая принимает параметром фабрики, или это методы фабрик ? Хорошо бы акцентировать. Мне этот ролик понравился (лайкнул), но я хочу чтобы мне ткнули пальцем в то, что здесь называется фабричным методом.
этот подход вполне может сочетатся с прототипированием
Как скрипит доска 😬
Совершенно не понятно
там в начале он говорил, что изучите батенька наследование)
Очень сильно напоминает полиморфизм, та же схема
Конечно, но это пример типичного использования полиморфизма но не единственное!
Чёт не зашло вообще.. ФМ нужен тогда, когда нам надо создать объект дочернего класса, но какой объект будет создаваться - мы не знаем.
А зачем тогда создавать объект, который не известен на выходе? Что потом с ним делать? А если создаться объект не тот, что надо? Или мы не ожидали ничего конкретного на выходе, а просто - одно из? Ни вкисаю в смысл. Пойду смотреть/читать дальше эту тему.
И что? Разобрался? Я тоже не понял зачем создавать объект непонятный на ходе... Кто решает какой объект нужен. Это же не квантовый компьютер...
Как это "создастся не тот" =) если ты передаешь объект конкретной фабрики в метод =) просто он должен реализовывать интерфейс МФ. Просто это сделано для того чтобы не перекидывать в методы гору разных объектов, вместо этого просто кинуть туда 1 фабрику которая даст тебе любой из этих объектов еще и динамически.
До момента выполнения программы мы н е знаем. какой вид объекта нам по
надобится создать ( B l oggsAppt E ncode r или MegaApp t Encode r } .
• Мы должны иметь возможность достаточно просто добавлять новые типы
объектов (например. следующее требование бизнеса - поддержка протокола
SyncML}.
• Каждый тип продукта связан с контекстом. который требует других специ
ализированных операций ( g e t H e a d e r T e x t ( ) . ge t Fo o t e r T e x t ( ) ) .
Кроме того. нужно отметить, что мы используем условные операторы. и мы уже
видели, что их можно заменить полиморфизмом. Шаблон Factory Method позволяет
использовать наследование и полиморфизм, чтобы инкапсулировать создание кон
кретных продуктов. Другими словами, для каждого протокола создается свой под
класс типа CommsMa nage r , в котором реализован свой метод g e t App t Encode r ( )
Ну , для примера, пользователь выбирает фильтр для ретуширования в "Фотошопе" . Следовательно он его будет выбирать в рантайме и создаваться он будет в рантайме.
Боже, Володя, ты похож на Иисуса - подстригись, бороду чуть короче можно и будешь круто выглядеть
К сожалению уже в который раз убеждаюсь, что у настоящих программистов нет времени записывать видео.
Непонятно! Увы!
Полагаю уже поздно размахивать кулаками и вы уже выучили данный паттерн, но мне больше всего помог взгляд на реализацию. Стало прям сразу все ясно.
дайте ему 10 р на церковь
Очень не понятно обьясняешь, только запутал.
полиморфизм
Непонятно
Может я тупой но абсолютно ничего не понял.
у тебя талант почти обьяснять
Так нифига и не понял... ((
1С программирование
фабрика::купитьДоску();
До свидания Володя
Привет, пострижися
много лишнено текста, почти Володя