Как стать автором
Обновить

Комментарии 23

если бы еще было написано на русском языке без слов-паразитов и идиом…
Для хорошего программиста, анг. не сильно мешает!
Не мешает, поэтому я с удольствием почитаю SourceMaking вместо этого опуса.
Спасибо за ссылку, в меморайз!
я не про англ, я про стилистику русского языка, Вы уж простите, но «пох, навесить, менюха, тупо» и подобные словечки режут ухо в тексте подобного хорошего содержания
Согласен! Просто изначально никто не собирался это показывать общественности. А потом возник спор по поводу вобще адекватности материала.
1. В целом неплохо, но IMHO явно не для «далекого от программирования» человека.
2. Не все стандартные паттерны (под ними понимаю паттерны, описанные в книге GoF) описаны.
3. С Composite по-моему оказия вышла. Смысл этого паттерна в том, что он позволяет объединять объекты в иерархию. Т.е. создается производный класс, который может хранить в себе несколько объектов того же типа. По ссылке, что Вы дали, это явно видно на UML-диаграмме в виде отношения агрегации «один ко многим» между производным классом и базовым соответственно…

Итог: можно использовать самому, чтобы повторить паттерны, но научить по этой «шпаргалке» другого без дополнительных устных разъяснений будет крайне затруднительно.
Полностью согласен.
На своем опыте скажу, что объяснить человеку, далекому от программирования, принципы ООП — достаточно сложно, и уж тем более по этой шпаргалке. А без ООП в паттернах никуда ;)
Довольно удобно иметь такое краткое описание. Но, чтобы понять суть, философию, почему нужно делать именно так — для этого нужно приводить реальный пример применения, на нем будет очевидна логичность и удобство паттернов. Мне в подобном случае помогло изучение архитектуры .NET, а конкретно — WPF. Подробное изучение примеров помогает настроить мозг на правильный ход мыслей.
Молодец! Полезная инфа. Все правильно, только «незачОт» за Composite.

позволяет создать один простой интерфейс для кучи похожих классов.

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

А Composite служит для того, чтобы объединять в одно единое целое объекты со схожим функционалом, и для выполнения какой-либо единой по сути операции (или операций), применимой сразу ко всем объектам в пучке. Скорее как-то так.

Я бы сказал, что Composite служит для объединения объектов одного типа (вернее, объектов, имеющий один и тот же базовый класс — юзаем полиморфизм :)) с сохранением интерфейса этого самого базового класса.
Спасибо за замечание по поводу Копозита! Действительно, такого нагородил. Вычеркну пока, а то своими словами не могу сейчас сформулировать.
Мне кажется в начале не хватает определения: что такое паттерн. Для тех, кто не знает английский это страшное непонятное слово.
Интернациональные у вас примеры :)
Честно сказать, это не для далёкого от программирования человека. Моя мама этого не поняла :). И кстати, чем ваше изложения отличается от книжного. По мне, то тоже самое, только на русском. Примеры должны быть более жизненные.

Например, когде мне необходимо было объяснить IoC (Inversion of control), то я пытался обяснить на очень простых вещах. Например так.

Есть мальчик Вася, который умеет очищать пол в квартире. Вася может это сделать пылесосом, метлой, щеткой. Для того, чтобы Вася не заморачивался с выбором средства для убирания, есть мама, которая вручает, в зависимости от обстоятельств (чуть-чуть грязно; сильно грязно; чтобы без дела не сидел :) ) Васе необходимый инструмент. Т.к. образом выбор инструмента ложиться на маму, а Вася просто тупо убирает.
Ну ваше изложение это просто вершина педагогики (тут без сарказма)! Мне просто было тяжело придумать нормальные примеры в сжатые сроки, тем не мение, я попытался отойти от книжного изложения, возможно, не всюду это получилось.
[oftop]
Дело в том, что я перподаю олимпиадное да и не только программирование детям. Делаю это не за деньги а для души. Вот и есть некоторый опыт. Таким примерам я научился от своего учителя по математике Шимбарецкого Владимира Николаевича. Он некоторые вещи, которые мы проходили в 8! классе объяснял на яблоках. Ведь так понятнее. Яблоки все любят :)
Может быть напишете статью на эту тему с примерами? Рассказали бы как придумывать понятные жизненные аналоги
Хорошая идея. Я бы тоже с удовольствием в этом поучаствовал (:
Я тоже заметил, что большинство тонкостей ООП можно легко и доступно объяснить на примере слегка туповатых людей в роли объектов.
Сдавая недавно курсовую работу, обнаружил, что преподаватели не понимают ООП. А как дело дошло до паттернов проектирования — так плакать захотелось.

Первоначально пытался объяснить вкратце, также как и Вы — теорию. К сожалению не получилось.
Тогда пришлось на примерах, подобных примеру krolser рассказывать:
1. Для чего вообще нужны паттерны (на примере кофе :)
2. Каков смысл в их использовании (на том же примере)
3. Как создать конкретную реализацию в коде, зная паттерн

Так что имхо важно правильно начать. А то, пока на пальцах не объяснишь, некоторые программисты с пятнадцатилетним (а то и более) стажем считают, что:
— паттерн проектирования — это код, который скачали с интернета (с)
— паттерн проектирования — это когда нажал на кнопку, и нечто проверит вашу программу на правильность
— LSP, SRP, OCP — это бред и набор страшных букв

Это я к тому, что у Вас не сказано, что такое паттерн. Хотя бы напишите, что это свод здравых советов к тому, как проектировать приложения. Или нечто иное, что хорошо охарактеризовало бы паттерны…
К сожалению, для меня LSP, SRP, OCP — это набор страшных букв :(
> 1. Для чего вообще нужны паттерны (на примере кофе :)
> 2. Каков смысл в их использовании (на том же примере)
> 3. Как создать конкретную реализацию в коде, зная паттерн

А можете привести объяснение? Просто интересно как на кофе объяснили :)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории