Эта статья — попытка ответить на вопрос 11-летнего олимпиадника: «Зачем нужны паттерны?» Ещё не отправил, выношу на общий суд и прошу любой критики. Цель — не дать исчерпывающий ответ, а вызвать новые вопросы.
Итак
Как учат программированию в школе? Вам дают формочки и учат делать куличики из песка. Это хорошо, надо ведь с чего-то начинать.
Но ты хочешь заняться более серьёзным делом. Например, построить дом. Из чего? Вас учили только из песка. Вам ничего не рассказывали о кирпичах — это не дело школы. (Скажу по секрету: они это не умеют.)
Хочешь строить дом? Подожди, давай научимся обжигать кирпичи. Или пойдём купим на рынке. Кирпичи — это и есть паттерны.
Почему это важно? Просто многие мои друзья (именно из разряда «олимпиадников») жестоко разочаровались в программировании, потому что они хотели строить зáмки из песка. Внешне это было классно! Например, мой друг написал сложнейшую логическую игру, но «на коленке», на анти-паттернах, как нас учили в школе…
«Анти-паттерн» — это то, как не надо проектировать программы.
А ещё мы с ним делали машинки на электромоторах. Мои машины всегда ездили быстрее, но я их делал «на коленке», из подручных материалов с изолентой. А он всегда пытался применять какие-то методы проектирования, стандартизировал «производственные процессы»… Его машины были медленнее. Но догадайся: кто из нас теперь стал конструктором (проектирует коробки передач)?
Вот что я наблюдаю: если ты сейчас научишься строить домá из песка (красивые!), машины на скотче (быстрые!), то потом переучиться практически невозможно. Мотивации не будет.
Вывод: если хочешь стать профессионалом, лучше начать строить домик из двух кирпичей, чем большущий зáмок из песка. Хотя замок проще.
Когда ты начнёшь потихоньку применять методики ООП в своих проектах (даже в самых простых), ты сразу увидишь, что паттерны не дают наступать на одни и те же грабли. Потом увидишь, как они упрощают взаимодействие между разработчиками. И вообще облегчают жизнь.
Применение паттернов — это те знания, которые приходят только с опытом. Если ты уже начнёшь пытаться их применять, то сэкономишь несколько лет.
P.S. Хабру:
Вопрос «Зачем нужны паттерны… 11-летнему?!» предлагаю не обсуждать. Мне бы лет 15 назад рассказали хоть что-нибудь из проектирования! (При всём моём уважении к подходу «пусть набьёт шишки, а потом мы ему скажем, что есть паттерны»...)
Кстати, тенденция «ООП с пелёнок» не нова.
Обсуждения по теме
Для чего нужны шаблоны проектирования
Паттерны ООП в метафорах
Как два программиста хлеб пекли
Автор: x256