Последние месяцы стали для меня школой по освоению паттернов проектирования. Осилив несколько книг, в том числе и «PHP объекты, шаблоны и методики программирования» Мэтта Зандстры, стал применять их на практике. На днях запилил в обработке дерева элементов Посетителя (Visitor), чем остался очень доволен. Красиво, чёрт возьми! А главное логично и понятно.
Теперь на досуге решил поискать новые подходы, новые паттерны. Поиски оказались не особо удачными, пока обнаружил один (небезынтересный надо сказать) подход в работе группы программистов. Официальное название сего паттерна «Monkey see, monkey do».
Как сказал один умный человек, выявить и описать новый паттерн может только хорошо подготовленный и опытный программист. С другой стороны, мне остается только изучать и восхищаться этими находками.
Приведу описание этого паттерна полностью:
Возьмите несколько обезьян и посадите их в клетку. Внутри клетки повесьте банан - высоко, но досягаемо при определённых усилиях. Теперь приготовьтесь и ждите. Очень скоро самая умная из обезьян начнет карабкаться по решётке чтобы достать банан. Пока она его не достала, окатите ледяной водой из шланга всех обезьян в клетке. При этом можно издать какой-нибудь злодейский смех типа «Мухахахаха!»
Через некоторое время другая обезьяна предпримет такую-же попытку. И снова перед тем, как она дотянется до банана, облейте их всех холодной водой. На этот раз «мухаха» делать не надо, вы ведь не обезьяна чтобы тупо повторять одно и то-же. Проявите свой интеллект, выберите какое-нибудь другое клише типа «ну вы и нубы, опять я вас сделал!»
Довольно быстро у всех обезьян в клетке выработается условный рефлекс, и если у кого-то из них ещё раз появится светлая мысль о банане, остальные обезьяны быстро выбьют эту мысль у неё из головы, чтобы не оказаться опять облитыми водой.
Когда все обезьяны научатся держаться от банана подальше, можно спрятать шланг, он больше не нужен. Теперь давайте уберём одного из этих опытных, битых «ветеранов» и заменим его небитым новичком. Этот новичок очень быстро попытается достать банан и тут-же получит тёплое дружеское избиение от своих новых приятелей.
Уберём ещё одного ветерана и добавим другого новичка. Как только он полезет к банану и остальные ветераны начнут выбивать из него дерьмо, предыдущий новичок, всё ещё находясь в удивлении и недоумении, не откажется тем не менее принять участие в празднике. Monkey see, monkey do.
Продолжим один за другим убирать битых ветеранов и заменять их новичками до тех пор, пока в клетке не останется ни одного ветерана.
И вот что мы имеем: любая новая обезьяна, пытающаяся взять банан, получает по башке от остальных. Но зачем? В клетке не осталось обезьян, которых обливали водой. И шланга теперь тоже нет. Если бы вы задали им этот вопрос, ответ был бы прост - потому что у нас так принято.
Что же касается реализации этого весёлого паттерна, наверное есть в какой-нибудь умной книге, что-нибудь вроде «Банды четырёх».