Абстрактная фабрика (Abstract Factory) - Паттерны проектирования C#

  Рет қаралды 14,114

CODE BLOG

CODE BLOG

4 жыл бұрын

Про PVS-Studio bit.ly/2YAZFdz
Статический анализ кода bit.ly/2YCskPg
Введите промокод #codeblog в поле "Сообщение" и получите Enterprise-лицензию PVS-Studio сроком не на 7 дней, а на месяц.
Абстрактная фабрика - abstract factory - это порождающий паттерн проектирования, который позволяет создавать группы взаимосвязанных (родственных) объектов, не специфицируя их классов. То есть, мы определяем интерфейс для создания взаимосвязанных объектов, без необходимости реализации конкретных классов.
Мы подробно рассмотрим идею этого шаблона проектирования и реализуем его на языке программирования C#. А также рассмотрим преимущества и недостатки шаблона проектирования абстрактная фабрика.
Исходный код проекта доступен на GitHub
github.com/shwanoff/AbstractF...
Еще про этот паттерн можно почитать на моем сайте по ссылке shwanoff.ru/abstract-factory/
Видео про порождающий паттерн проектирования Фабричный метод
• Фабричный метод (Facto...
Паттерны проектирования описывают типичные способы решения часто встречающихся проблем архитектуры программ. Шаблоны проектирования C# представляют собой не какой-то конкретный код, а общую концепцию решения той или иной проблемы, которую нужно будет ещё подстроить под нужды вашей программы. Порождающие паттерны решают задачи создания новых экземпляров класса.
Мы реализуем шаблон абстрактная фабрика C# (abstract factory c#) на примере работы автоматизированного сборщика автомобиля, который может производить как легковые, так и грузовые автомобили. Такие порождающие паттерны проектирования C# (design pattern c#) позволяют избавить класс от привязки к конкретным продуктам. Паттерн абстрактная фабрика (abstract factory pattern) упрощает добавление новых продуктов в программу. Мы рассмотрим паттерны c# различных типов и реализуем абстрактная фабрика пример. Что такое абстрактна фабрика? Абстрактная фабрика паттерн, позволяющий изменять поведение системы, варьируя создаваемые объекты, при этом сохраняя интерфейсы.
Кстати, меня зовут Шванов Вадим, и я профессиональный .NET разработчик с опытом более 8 лет и автор этого канала CODE BLOG. Я рассказываю про IT технологии и веду этот курс по языку C# с нуля. В его рамках мы рассмотрим как базовый синтаксис языка C Sharp, так и его практическое применение и специальные технологии, такие как ASP .NET, Core, MVC, Unity, WCF, WPF, структуры данных и алгоритмы, паттерны проектирования, информатика, программное обеспечение и многое другое. Для меня важно не только показать практическое применение языка C#, но и объяснить основную идею и базовые понятия Computer Science. В качестве основного инструмента разработки используется visual studio c# и проекты на visual c#.
Обучающий курс паттерны проектирования C# (шаблоны проектирования C#):
• Паттерны проектировани...
Подробный курс по языку программирования C#:
• Преимущества и недоста...
Подробный курс по структурам данных на языке программирования C#:
• Связный список (linked...
Подробный курс по алгоритмам сортировки на языке C#:
• Сортировка пузырьком (...
Разговоры о программировании, мотивации, и ответы на IT вопросы:
• Практика программирова...
#codeblog #программирование #csharp #паттерны #ityoutubersru

Пікірлер: 31
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Абстрактная фабрика (Abstract Factory) - это порождающий паттерн проектирования, сначала определяет интерфейс создания семейств родственных объектов, а потом позволяет создавать конкретные группы классов, реализующих соответствующие интерфейсы. Мы рассмотрим идею и пример реализации шаблона абстрактная фабрика на языке программирования C#. Исходный код проекта доступен по ссылке github.com/shwanoff/ Подписывайтесь на канал, включайте колокольчик и поддержите развитие канала своим лайком. Это действительно важно для меня. А также не стесняйтесь задавать вопросы в комментариях. Включайте оповещения о новых видео и прямых трансляциях прямо в личные сообщения ВКонтакте. Самый удобный способ не пропустить ни одного видео - подпишись на рассылку bit.ly/2KVGNOD А для общения заходите в наши чаты: Общий чат в телеграм: ttttt.me/codeblog_chat Чат по C# в телеграм: ttttt.me/codeblog_csharp Чат в дискорд: discord.gg/EV2WdyP
@austintaylor2607
@austintaylor2607 2 жыл бұрын
instablaster.
@PersonaN1
@PersonaN1 4 жыл бұрын
У тебя много крутых уроков и серий, но это наверно, одна из важнейших. И ты отлично подаешь материал+пример. Обязательно продолжи, а то уже пол года прошло!
@AShahabov
@AShahabov 4 жыл бұрын
Круто! Все стало ясно теперь, особенно когда начал рисовать таблицу. Сделай видео со сравнением Abstract Factory и Builder.
@kyberplay4361
@kyberplay4361 4 жыл бұрын
Большое спасибо за видос =). Луйк
@vladoss4643
@vladoss4643 Жыл бұрын
Вооооот!!!! У меня буквально 3 дня назад была такая проблема!!! Было 2 похожих метода, которые использовали один и тот же интерфейс. Но только для разных реализаций интерфейса, методы должны были работать по-разному. Я не понял, как это сделать и просто залил эти методы в реализации. В итоге получилось много повторяемого кода. И не знаю, как по-другому.... А вот, если это через классы, через фактори провернуть.... P.S. Если конкретно - есть 2 таблицы в БД. Они похожи, но у них различаются названия похожих столбцов и в одной столбцов больше, чем в другой. Я проверяю наличие определённого дома или улицы. Для каждой таблицы написан свой метод, работающий с интерфейсом "адрес", который может реализовываться как дом или как улица. Но блин!!! Для улицы - надо проверять, условно, название улицы и её тип. А для дома - тип дома, номер, корпус, строение и тд.... И вот как?))) Как вот эти перекрёстные хрени прописывать?))
@vladoss4643
@vladoss4643 Жыл бұрын
Есть ещё один интересующий вопрос: А можно каким-либо образом сделать 2 метода с одинаковым названием и сигнатурой, но только, чтобы поменяв что-то один раз в коде, подменивались сами методы? Типо, интерфейсы для методов. Есть такая штука? Существует? А, если нет, то почему? Почему не используется, это же очень удобно? Ну и тд...
@razorprod4097
@razorprod4097 4 жыл бұрын
Программирую на unity. Сейчас пишу игру под стим, симулятор езды шашками в онлайне. Тоже голосую за то, чтобы были уроки на тему unity. Вообще лично мне было бы интересно посмотреть на реализацию таких специфических вещей, как например PoolManager для онлайна, который синхронизирует объекты по сети со всеми клиентами. Или виды синхронизации позиции обьектов по сети - все что касается интерполяции, экстраполяции. Существует большое кол-во способов синхронизировать параметры и положение объекта в пространстве у всех клиентов, так как пинг у всех разный, и данные априори приходят с задержкой на клиент, юзают экстраполяцию для максимально точной позиционировании объекта в пространстве на клиенте. Какие-то такие вещи углубленные было бы интересно понаблюдать, вашу реализацию этого. Я так понял это канал не только для новичков, и не только про базовые вещи в языке. Поэтому на подобную дичь которую я описал было бы интересно посмотреть))
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Очень интересные вопросы ) записал себе в блокнот )
@askarsaitov2913
@askarsaitov2913 4 жыл бұрын
Привет! Посмотрел описание канал, ты пишешь, что в будущем планируешь видео по др ЯП - не надо, не отходи от C#, по питону и джаве есть вменяемые каналы на русском, а по шарпу достойных внимания нет, дальше хеллоу ворда почти не найти. Тем для видео полно, те же алгоритмы, к примеру, на графах, новинка от MS .Net Core, ASP.Net Core и т.д. За видео и канал в целом огромная благодарность !
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Ну пока по C# и .net еще целая куча материала, поэтому есть что рассказывать. но когда-то может и закончится )
@askarsaitov2913
@askarsaitov2913 4 жыл бұрын
значить я с тобой ))
@user-zk4dt2mu9f
@user-zk4dt2mu9f 4 жыл бұрын
Как фабрики с ioc взаимодействуют? В плане каким образом можно запихнуть экземпляр в ioc который создали через фабрику. Да и вообще, тема ioc интересно было-бы послушать)
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Вообще понятие фабрики универсально, ей без разницы, что именно выпускать, что запрограммируешь, то и будет. А вот по ioc ничего не могу сказать, совсем пока не знаком с этой темой
@dmitry9018
@dmitry9018 3 жыл бұрын
Могли бы пояснить как сериализовывать объект класса абстрактной фабрики?
@mishapolishchuk5556
@mishapolishchuk5556 4 жыл бұрын
Wow, wow!! What I see!! Is it start video of new chapter "Patterns"??
@ewgenbi
@ewgenbi 4 жыл бұрын
No, isn't!
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Not really. This is the third video in the course. And I will continue to shoot video ))
@axsuam
@axsuam 4 жыл бұрын
Всё так просто и так сложно :)
@kurnakovv
@kurnakovv 4 жыл бұрын
а что сложно то?)
@kurnakovv
@kurnakovv 4 жыл бұрын
попробуй добавить мотоцикл там например, может понятнее станет))
@TOXA_PYATNITSKY
@TOXA_PYATNITSKY 4 жыл бұрын
Тоесть получается что такой подход не оч даже в твоём примере с авто, вить все время что то добавляется в автомобиль , тоесть получается что при каждом новом комплектующем надо дополнять все больше и больше строк кода из за того что интерфейс меняется , как от этого можно избавиться?
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Можно попробовать другой паттерн в таком случае, например строитель
@yevhenvictorovich2288
@yevhenvictorovich2288 4 жыл бұрын
Я так понял можно один раз написать этот паттерн как базовый и потом через интерфейсы переопределять что нам нужно : самолет, лопата, колбаса и т.д. Я правильно понял?
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Примерно, только производимые продукты должны быть схожими по возможностям. по сути - реализовывать один интерфейс и тогда да )
@user-nn6er9mf8w
@user-nn6er9mf8w Жыл бұрын
Какие 640? Речь шла о 48К
@misc2850
@misc2850 4 жыл бұрын
640кб же
@CODEBLOG
@CODEBLOG 4 жыл бұрын
Ну да, странно что никто раньше не заметил )
@mudia3522
@mudia3522 4 жыл бұрын
Музыка ?
@CODEBLOG
@CODEBLOG 4 жыл бұрын
У меня в группе вк эта мелодия фоновая добавлена в аудиозаписи. прям первая. название к сожалению не знаю
@ivanomelchenko1895
@ivanomelchenko1895 3 жыл бұрын
+++
CLR via C#. Глава 11. События C#
1:26:40
CODE BLOG
Рет қаралды 8 М.
БОЛЬШОЙ ПЕТУШОК #shorts
00:21
Паша Осадчий
Рет қаралды 10 МЛН
Was ist im Eis versteckt? 🧊 Coole Winter-Gadgets von Amazon
00:37
SMOL German
Рет қаралды 38 МЛН
Who has won ?? 😀 #shortvideo #lizzyisaeva
00:24
Lizzy Isaeva
Рет қаралды 61 МЛН
Асинхронное программирование на C# (блок 1)
1:01:53
Просто программист
Рет қаралды 6 М.
Abstract Factory Pattern Made Simple in C#
25:04
campbelltech
Рет қаралды 2,4 М.
Паттерн Factory Method, Фабричный метод, С#, Unity
12:10
Factory Method - Design patterns C#
22:14
CODE BLOG
Рет қаралды 25 М.
Как реализовать сервис с CQRS | Mediator
16:40