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

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024
  • Про PVS-Studio bit.ly/2YAZFdz
    Статический анализ кода bit.ly/2YCskPg
    Введите промокод #codeblog в поле "Сообщение" и получите Enterprise-лицензию PVS-Studio сроком не на 7 дней, а на месяц.
    Абстрактная фабрика - abstract factory - это порождающий паттерн проектирования, который позволяет создавать группы взаимосвязанных (родственных) объектов, не специфицируя их классов. То есть, мы определяем интерфейс для создания взаимосвязанных объектов, без необходимости реализации конкретных классов.
    Мы подробно рассмотрим идею этого шаблона проектирования и реализуем его на языке программирования C#. А также рассмотрим преимущества и недостатки шаблона проектирования абстрактная фабрика.
    Исходный код проекта доступен на GitHub
    github.com/shw...
    Еще про этот паттерн можно почитать на моем сайте по ссылке shwanoff.ru/ab...
    Видео про порождающий паттерн проектирования Фабричный метод
    • Фабричный метод (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  5 лет назад +5

    Абстрактная фабрика (Abstract Factory) - это порождающий паттерн проектирования, сначала определяет интерфейс создания семейств родственных объектов, а потом позволяет создавать конкретные группы классов, реализующих соответствующие интерфейсы. Мы рассмотрим идею и пример реализации шаблона абстрактная фабрика на языке программирования C#.
    Исходный код проекта доступен по ссылке github.com/shwanoff/
    Подписывайтесь на канал, включайте колокольчик и поддержите развитие канала своим лайком. Это действительно важно для меня. А также не стесняйтесь задавать вопросы в комментариях.
    Включайте оповещения о новых видео и прямых трансляциях прямо в личные сообщения ВКонтакте. Самый удобный способ не пропустить ни одного видео - подпишись на рассылку bit.ly/2KVGNOD
    А для общения заходите в наши чаты:
    Общий чат в телеграм: ttttt.me/codeblog_chat
    Чат по C# в телеграм: ttttt.me/codeblog_csharp
    Чат в дискорд: discord.gg/EV2WdyP

  • @AShahabov
    @AShahabov 4 года назад +1

    Круто! Все стало ясно теперь, особенно когда начал рисовать таблицу. Сделай видео со сравнением Abstract Factory и Builder.

  • @askarsaitov2913
    @askarsaitov2913 5 лет назад +1

    Привет!
    Посмотрел описание канал, ты пишешь, что в будущем планируешь видео по др ЯП - не надо, не отходи от C#, по питону и джаве есть вменяемые каналы на русском, а по шарпу достойных внимания нет, дальше хеллоу ворда почти не найти.
    Тем для видео полно, те же алгоритмы, к примеру, на графах, новинка от MS .Net Core, ASP.Net Core и т.д.
    За видео и канал в целом огромная благодарность !

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      Ну пока по C# и .net еще целая куча материала, поэтому есть что рассказывать. но когда-то может и закончится )

    • @askarsaitov2913
      @askarsaitov2913 5 лет назад

      значить я с тобой ))

  • @TOXA_PYATNITSKY
    @TOXA_PYATNITSKY 4 года назад

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

    • @CODEBLOG
      @CODEBLOG  4 года назад

      Можно попробовать другой паттерн в таком случае, например строитель

  • @yevhenvictorovich2288
    @yevhenvictorovich2288 5 лет назад

    Я так понял можно один раз написать этот паттерн как базовый и потом через интерфейсы переопределять что нам нужно : самолет, лопата, колбаса и т.д. Я правильно понял?

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      Примерно, только производимые продукты должны быть схожими по возможностям. по сути - реализовывать один интерфейс и тогда да )

  • @misc2850
    @misc2850 5 лет назад +1

    640кб же

    • @CODEBLOG
      @CODEBLOG  5 лет назад +1

      Ну да, странно что никто раньше не заметил )

  • @PersonaN1
    @PersonaN1 4 года назад +2

    У тебя много крутых уроков и серий, но это наверно, одна из важнейших. И ты отлично подаешь материал+пример. Обязательно продолжи, а то уже пол года прошло!

  • @vladoss4643
    @vladoss4643 Год назад

    Вооооот!!!! У меня буквально 3 дня назад была такая проблема!!! Было 2 похожих метода, которые использовали один и тот же интерфейс. Но только для разных реализаций интерфейса, методы должны были работать по-разному.
    Я не понял, как это сделать и просто залил эти методы в реализации. В итоге получилось много повторяемого кода. И не знаю, как по-другому.... А вот, если это через классы, через фактори провернуть....
    P.S. Если конкретно - есть 2 таблицы в БД. Они похожи, но у них различаются названия похожих столбцов и в одной столбцов больше, чем в другой. Я проверяю наличие определённого дома или улицы. Для каждой таблицы написан свой метод, работающий с интерфейсом "адрес", который может реализовываться как дом или как улица. Но блин!!!
    Для улицы - надо проверять, условно, название улицы и её тип. А для дома - тип дома, номер, корпус, строение и тд.... И вот как?))) Как вот эти перекрёстные хрени прописывать?))

    • @vladoss4643
      @vladoss4643 Год назад

      Есть ещё один интересующий вопрос:
      А можно каким-либо образом сделать 2 метода с одинаковым названием и сигнатурой, но только, чтобы поменяв что-то один раз в коде, подменивались сами методы?
      Типо, интерфейсы для методов. Есть такая штука? Существует? А, если нет, то почему? Почему не используется, это же очень удобно? Ну и тд...

  • @ГригорийСиницын-з3й

    Какие 640? Речь шла о 48К

  • @ЕвгенийАвдеев-и6п
    @ЕвгенийАвдеев-и6п 5 лет назад +1

    Как фабрики с ioc взаимодействуют? В плане каким образом можно запихнуть экземпляр в ioc который создали через фабрику. Да и вообще, тема ioc интересно было-бы послушать)

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      Вообще понятие фабрики универсально, ей без разницы, что именно выпускать, что запрограммируешь, то и будет. А вот по ioc ничего не могу сказать, совсем пока не знаком с этой темой

  • @dmitry9018
    @dmitry9018 3 года назад

    Могли бы пояснить как сериализовывать объект класса абстрактной фабрики?

  • @ivanomelchenko1895
    @ivanomelchenko1895 3 года назад

    +++

  • @kyberplay4361
    @kyberplay4361 4 года назад

    Большое спасибо за видос =). Луйк

  • @razorprod4097
    @razorprod4097 5 лет назад

    Программирую на unity. Сейчас пишу игру под стим, симулятор езды шашками в онлайне. Тоже голосую за то, чтобы были уроки на тему unity. Вообще лично мне было бы интересно посмотреть на реализацию таких специфических вещей, как например PoolManager для онлайна, который синхронизирует объекты по сети со всеми клиентами. Или виды синхронизации позиции обьектов по сети - все что касается интерполяции, экстраполяции. Существует большое кол-во способов синхронизировать параметры и положение объекта в пространстве у всех клиентов, так как пинг у всех разный, и данные априори приходят с задержкой на клиент, юзают экстраполяцию для максимально точной позиционировании объекта в пространстве на клиенте. Какие-то такие вещи углубленные было бы интересно понаблюдать, вашу реализацию этого. Я так понял это канал не только для новичков, и не только про базовые вещи в языке. Поэтому на подобную дичь которую я описал было бы интересно посмотреть))

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      Очень интересные вопросы ) записал себе в блокнот )

  • @mishapolishchuk5556
    @mishapolishchuk5556 5 лет назад

    Wow, wow!! What I see!! Is it start video of new chapter "Patterns"??

    • @ewgenbi
      @ewgenbi 5 лет назад

      No, isn't!

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      Not really. This is the third video in the course. And I will continue to shoot video ))

  • @mudia3522
    @mudia3522 5 лет назад

    Музыка ?

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      У меня в группе вк эта мелодия фоновая добавлена в аудиозаписи. прям первая. название к сожалению не знаю

  • @axsuam
    @axsuam 4 года назад

    Всё так просто и так сложно :)

    • @kurnakovv
      @kurnakovv 4 года назад

      а что сложно то?)

    • @kurnakovv
      @kurnakovv 4 года назад

      попробуй добавить мотоцикл там например, может понятнее станет))