Как выучить/понять ООП паттерны?

Доброго времени суток.

Захотелось для себя попробовать разобраться (хотя-бы) в основных патернах. Время от времени возникает необходимость писать что то с нуля, или же глобально работать напильником (переделывать большие куски). Столкнулся с тем что, понимаю реализацию, и понимаю пользу буквально нескольких шаблонов.. (например синглетон или фабрика т.п.) , в остальном же, это изобретение велосипедов.
Решил начать с книжки "Мэт Задстра
РНР: объекты, шаблоны и методики программирования
4-е издание" Прекрасно написано, чуть ли не для детей, но вот прочитав уже больше половины, понимаю что в памяти осталось несколько новых слов - названий, может еще совсем немного понимания новой логики и все.
Я не планирую заучивать названия или методы (мне не экзамен сдавать), хотелось бы разобраться именно для себя. Может что то посоветуете?
  • Вопрос задан
  • 4084 просмотра
Решения вопроса 1
DevMan
@DevMan
теория и практика. и так по кругу.
только чтение ничего не даст.

прочитали паттерн -> посмотрели диаграммы -> тут же сели и попробовали реализовать самостоятельно, а не переписывая с книги/инторнетов -> посмотрели готовые реализации -> сделали выводы -> взялись за следующий.

ну и параллельно постигать что такое ооп вообще. для этого, кстати, можно и нужно читать фундаментальные вещи, без привязки к языку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@MadridianFox
Web-программист, многостаночник
Не надо учить паттерны. Надо понимать ООП. Чтобы понимать ООП, надо знать зачем оно нужно. Методология/парадигма - это подход к решению проблемы.
Значит ООП (а это парадигма) решает проблему.
Эту проблему необходимо ощутить на себе. Для этого нужна практика.

Мэт Задстра - отличный выбор для начала. Сам с него начинал.
Однако перед этим надо набить шишки. Только тогда, то, что описано в книге, будет воспринято как полезная информация.
Перед тем, как прочитать эту книгу я два года говнокодил.
Прочитал - зашло, подумал что всё понял.
Прочитал Фаулера. Ничего не понял.
Через полгода снова прочитал Фаулера. Подумал что теперь то уж точно всё понял.
Ан-нет.
Сейчас придерживаюсь взглядов на ООП Егора Бугаенко. Думаю что теперь то уж точно всё знаю.
Посмотрим что будет дальше.
Ответ написан
@immaculate
Программист-путешественник
Пожалуйста, только не надо думать, что паттерны — это серебряная пуля, которая решит все проблемы. Множество раз встречался с кодом, который был ужасен, зато использовал паттерны. Не там где надо, и не так, как надо, но наверное автор чувствовал, что пишет шедевр, так как он «использовал паттерны».

Ценность паттернов в динамических языках вообще намного ниже, чем в статических. Большинство книг по паттернам были написаны для языков C++ и Java. В динамических интерпертируемых языках очень часто можно обойтись без них.

Я бы советовал вообще не заморачиваться. Если у вас есть нетривиальная проблема, и вы не знаете, как ее элегантно решить, тогда смотреть паттерны и думать, какой лучше подходит для решения проблемы. Когда сначала берутся паттерны, и применяются к решению произвольной проблемы (которая более элегантно решается без паттернов, или с использованием других паттернов), получается плохой нечитаемый код, который вообще не делает то, что нужно.
Ответ написан
Комментировать
GTRxShock
@GTRxShock
SA
Бумажные книги надо читать с карандашом, ключевые места на полях отмечать, чтобы потом можно было буквально за 5-10 минут восстановить общую картину прочитанного. Сами удивитесь сколько подробностей на самом деле помнит ваш мозг, но не сознается в этом :)

Можно вести небольшой конспект. Плюс интервальные повторения наряду с практикой прочно вобьют в вашу голову все необходимые знания.

Так же для общей картины и понимания в целом есть довольно занятная книга: Паттерны проектирования
Ответ написан
Комментировать
freecoder-ru
@freecoder-ru
Тренировать прочитанное , желательно поскачивать пару долгих туториалов с примерами кода .
Книги без примеров кода обходите , желательно поискать книги там где на протяжении чтения создаётся какоето приложения .
Копатся в примерах кода , гитхуб хороший ресурс .
OOP понимается современем и только с практикой.
Ответ написан
@TimurMalyshev
php-программист среднего уровня
Внезапно захотелось вставить свои 5 копеек ))
Паттерны РЕАЛЬНО могут пригодиться в проектах только с определенной направленностью и сложностью.
Думаю нужно тщательно погуглить - где именно они применяются.
Затем поставить себе аналогичную задачу. А уже затем попытаться решить ее используя паттерны, отшлифовывая код до собственного идеала.
Как пример - "велосипед" - своя CMS (или framework). Можно подглядывать в Laravel, Symfony и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы