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

Sdílet
Vložit
  • čas přidán 15. 09. 2019
  • Про 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

Komentáře • 31

  • @CODEBLOG
    @CODEBLOG  Před 4 lety +5

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

  • @PersonaN1
    @PersonaN1 Před 4 lety +1

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

  • @AShahabov
    @AShahabov Před 4 lety +1

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

  • @kyberplay4361
    @kyberplay4361 Před 4 lety

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

  • @user-zk4dt2mu9f
    @user-zk4dt2mu9f Před 4 lety +1

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

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

  • @razorprod4097
    @razorprod4097 Před 4 lety

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

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

  • @askarsaitov2913
    @askarsaitov2913 Před 4 lety +1

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

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

    • @askarsaitov2913
      @askarsaitov2913 Před 4 lety

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

  • @vladoss4643
    @vladoss4643 Před rokem

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

    • @vladoss4643
      @vladoss4643 Před rokem

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

  • @dmitry9018
    @dmitry9018 Před 3 lety

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

  • @mishapolishchuk5556
    @mishapolishchuk5556 Před 4 lety

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

    • @ewgenbi
      @ewgenbi Před 4 lety

      No, isn't!

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

  • @TOXA_PYATNITSKY
    @TOXA_PYATNITSKY Před 4 lety

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

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

  • @yevhenvictorovich2288
    @yevhenvictorovich2288 Před 4 lety

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

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

  • @axsuam
    @axsuam Před 4 lety

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

    • @kurnakovv
      @kurnakovv Před 4 lety

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

    • @kurnakovv
      @kurnakovv Před 4 lety

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

  • @mudia3522
    @mudia3522 Před 4 lety

    Музыка ?

    • @CODEBLOG
      @CODEBLOG  Před 4 lety

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

  • @misc2850
    @misc2850 Před 4 lety +1

    640кб же

    • @CODEBLOG
      @CODEBLOG  Před 4 lety +1

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

  • @ivanomelchenko1895
    @ivanomelchenko1895 Před 3 lety

    +++

  • @user-nn6er9mf8w
    @user-nn6er9mf8w Před rokem

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