Блог Георгия Могелашвили

Паттерны проектирования

Что такое паттерны проектирования

Курс по паттернам (шаблонам) проектирования с использованием языка C# расскажет вам о лучших способах проектирования приложений в ООП. Вы узнаете, как с помощью нехитрых приемов организовать слабосвязанные классы, которые можно легко взаимозаменять и переиспользовать. Используя паттерны проектирования вы сможете писать удобные и понятные всем приложения.

Для кого этот курс

Этот курс для тех программистов, кто стремиться стать настоящим профессионалом. Если у вас есть небольшие навыки в программировании и вы понимаете объектно-оринетированный подход к программированию, то вы просто обязаны пройти все уроки данного курса!

Видео уроков

01. Стратегия – http://www.youtube.com/watch?v=qo7Hqwypwcc

02. Наблюдатель – http://www.youtube.com/watch?v=yWfrgDvyjYc

03. Декоратор – http://www.youtube.com/watch?v=ccM5BI1Fe-I

04. Фабрика – http://www.youtube.com/watch?v=ebTuua5Ai8o

05. Команда – http://www.youtube.com/watch?v=N6T57KLg73A

06. Адаптер – http://www.youtube.com/watch?v=9BPBRinsOsE

07. Фасад – http://www.youtube.com/watch?v=d3imhFspmHg

08. Шаблонный метод – http://www.youtube.com/watch?v=fLTOE6vZ8Ck

09. Состояние – http://www.youtube.com/watch?v=w40qoRAHCrk

10. Строитель – http://www.youtube.com/watch?v=j-m5gnjMvJM

Материалы уроков:

01. Стратегия – http://sdrv.ms/V6dOVv

02. Наблюдатель – http://sdrv.ms/12QGxCc

03. Декоратор – http://sdrv.ms/12HzTPz

04. Фабрика – http://sdrv.ms/W3beyg

05. Команда – http://sdrv.ms/ZCJnwU

06. Адаптер – http://sdrv.ms/YjlhRs

07. Фасад – http://sdrv.ms/YjkFvd

08. Шаблонный метод – http://sdrv.ms/RTIj4C

09. Состояние – http://sdrv.ms/12QDfiz

10. Строитель – http://sdrv.ms/12QDc6c

38 комментариве к “Паттерны проектирования

  1. Gal

    спасибо за Вашу работу!очень понравилось-очень полезно,ясно,доступно и наглядно.
    также в сети нашел ранее и курс C#.после чтения книг продуктивность обучения повышается в разы!
    очень здорово.еще раз спасибо.

    1. Георгий Могелашвили Автор записи

      Все паттерны не охватить, их довольно большое количество. Я вам советую поискать в интернете описание других паттернов и попробовать на своем опыте их применить (в той же википедии есть много статей по паттернам)

  2. Александр

    Георгий, спасибо большое!

    Давно присматривался к паттернам, начинал читать книгу банды четырех но не пошло, а ваши уроки затягивают, все смотрится на одном дыхании, в голове вопросы сразу находят ответ, ничего лишнего но и ничего не опущено. Еще раз спасибо!

  3. Denis

    Здравствуйте Георгий! Просмотрел первый урок, все очень понравилось. У Вас просто удивительная способность с помощью таких-вот “уток-прибауток” доходчиво объяснять сложные вещи. Вопрос: если в классе FlyWithWings описать метод CanCodeCSarp, затем в утке вызвать его таким способом ExoticDuck.flyBehavior.CanCodeCSarp() или вызвать внути утки this.flyBehavior.CanCodeCSarp() – это сработает? Или смысл интерфейсного поля не только в том, что это “разъем” для присвоение различных классов, но и в том, что в интерфейсное поле могут передаться только те свойства\методы, которые подразумевает данный интерфейс и ничего более?
    И просьба: порекомендуйте, пожалуйста, русскоязычный активный форум(ы) по .NET, ASP.NET, С#. Заранее, спасибо.

    1. Георгий Могелашвили Автор записи

      Если я правильно понял вопрос, то вы имели в виду это:
      IFlyable flyBehavior = new FlyWithWings();
      flyBehavior.CanCodeCSharp();

      При этом метод CanCodeCSharp определен только в классе? Тогда нет, этот код работать не будет, поскольку вы приводите к типу IFlyable и работаете с ним, и компилятор не будет знать, что есть еще какие-то методы. Для того, чтобы вызывать метод CanCodeCSharp, нужно явно приводить переменную flyBehavior к типу FlyWithWings. А это уже рушит абстракции и так делать не хорошо.

  4. Denis

    Спасибо Георгий, все понял, спасибо за ответ.
    А вот второй урок о паттернах – посложнее будет. Все три варианта решения задачи требуют внимательного изучения. Пришлось открыть учебник John Sharp о Си Шарп. И мне показалось, что можно создать просто an instance of the delegate и он будет в дальнейшем работать точно так же как и event от данного делегата, разница только в написание, если мы пишем что-то как event – это уже многое поясняет при чтении кода.

  5. Alex

    Георгий, Вы – молодец! Очень качественно, доступно, профессионально! Побольше бы таких преподавателей :-)

  6. Vadim Tukaev

    Я недавно заинтересовался ООП, потому что начал тонуть в собственном коде. Соответственно, мне нужны какие-то готовые рецепты. Я погуглил и нашёл информацию о паттерне MVC. Как я понял, вполне возможно построить всю программу из иерархии таких паттернов (HMVC). Это наверняка не лучший способ, но мне срочно надо что-то достаточно универсальное.

    По аналогии с путешественником в чужой стране, которому достаточно знать один способ построения фраз (например, местоимение – глагол – существительное) и десяток слов. Этого будет достаточно, чтобы попросить поесть. А уж потом можно изучать творчество местных поэтов.

    Ответьте, пожалуйста, какие паттерны обычно выполняют роль Модели, какие – Контроллера и т.д.? Можно на примере задачи “Волчий остров″. http://clck.ru/8qijC Я ещё школьником делал её на Турбо Паскале.

    1. Георгий Могелашвили Автор записи

      Вадим, к сожадению такого универсального паттерна нет. Всегда нужно отталкиваться от той задачи, которая перед вами стоит. Например, MVC хорошо подходит для веб-программирования, где можно легко отделить логику приложения от представления данных. В другой ситуации больше подойдет MVVM. Где-то вообще нужно будет придумываться что-то еще, используя и компонуя различные паттерны и подходы. Увы, аналогия с путешественником не работает в мире программирования. Это плохой путь, на который не стоит вставать.

  7. Сергей

    Спасибо за обстоятельное рассмотрение материала. Пример с утками(паттерн Стратегия) в книге Фримена “Паттерны проэктирования” требует для понимания в 10 раз больше усилий, чем в Вашем изложении.

  8. Олег

    Спасибо. Зря вы остановились. Хотя бы шаблоны GoF закончили. Думаю люди хотят продолжения. Еще раз спасибо за хорошие уроки.

  9. Дмитрий

    Здравствуйте, Георгий! Отличные уроки по паттернам, спасибо! У меня возник вопрос по паттерну “Состояние”. Если объект может иметь только одно состояние в любой момент времени, то этот случай превосходно описывается Вашим уроком. Но как применить данный паттерн, если объект может находиться в нескольких состояниях одновременно (например, в двух), причем поведение объекта однозначно определяется каждой комбинацией этих двух состояний? Совершенно очевидно, что напрямую определять целое декартово произведение этих двух множеств состояний в качестве классов-реализаций IState представляется совершенно нелогичным решением. Как бы Вы разрешили данную проблему?

    1. Георгий Могелашвили Автор записи

      Два состояния в один момент? Как-то я не очень себе это представляю с точки зрения идеологии. Если только это два состояния, каждое из отдельной предметной области. Тогда можно держать два поля с состояниями. В одном хранить одно, в другом – другое. Вот статья на википедии, вроде де бы про то, о чем вы спрашиваете: http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)

      Надеюсь я правильно понял ваш вопрос. Если что – пишите мне на gmogelashvili@gmail.com

  10. ldar

    Спасибо за качественные уроки.
    Только ИМХО конечно, патерны лучше рассматривать в обратном порядке, по уровню сложности.

  11. Roman

    Благодарю Вас, за проделанную работу! Желаю Вам вдохновения и энтузиазма в Ваших устремлениях. Очень понравился Ваш видеокурс по паттернам. Посмотреть видеокурс в 100 раз лучше чем почитать статью в Википедии!

  12. Александр

    Отличные видео уроки! Спасибо Вам за проделанную работу и за бескорыстный подход.

  13. Александр

    Георгий, спасибо за уроки!
    Подскажите пожалуйста, где можно найти домашнее задание к урокам и проверочные вопросы?
    С уважением, Александр

  14. Alex Kapel

    Здравствуйте! Супер уроки, однако ссылки удалены на материалы. Не подскажите, где взять? Нужны материалы по фабрике.

  15. Criozone

    Спасибо за уроки. К сожалению ссылки на материалы уже не работают ((. Можно их обновить?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>