Прежде чем заняться разработкой собственного проекта на основе каркаса приложения Laravel, нам неплохо было бы понять архитектуру каркаса приложения. Некоторые могут спросить: Зачем это нужно? Смысл забивать себе голову разной теоретической чепухой?
Постараюсь ответить на этот вопрос примером из жизни:
Представьте себе, что вы хотите иметь эксклюзивный автомобиль. Естественно он будет строиться на базе некоей серийной модели, но для того, чтобы его построить вам потребуется помощь людей, которые умеют это делать. Вы решаете обратиться к мастерам или даже к фирмам, у которых есть все необходимое: знания, опыт, оборудование и инструмент, но их услуги не дешевы, Ваш бюджет просто не выдержит таких расходов. Тогда вы решаете, что будете строить автомобиль самостоятельно. Отличное решение — правда, вы берете в руки инструмент, плюете на изучение теории, внедряете свои задумки и в итоге…
Я думаю, не стоит описывать, что у вас получится в итоге, ясно только одно — ничего хорошего.
Ну и более приближенный к теме Laravel 4 ответ: Понимание архитектуры приложения, знание основ паттернов (шаблонов) проектирования, помогут вам понять, почему следует использовать именно этот каркас web-приложения, оценить его слабые и сильные стороны. Так же вы получите ответ, почему так сильно изменился Laravel 4 по сравнению с Laravel 3.
Для тех, кто все же решил изучить теорию, прежде чем приступить к практике, советую: запаситесь терпением.
После прочтения статьи не останавливайтесь на достигнутом, в сети много ресурсов, где можно почерпнуть нужную информацию по паттернам. Поверьте, зная, что такое паттерны, их конкретные реализации и как их использовать, можно добиться намного большего, чем оставив эту тему за пределами багажа своих знаний…
Если Вы спокойно и уверенно ориентируетесь в паттернах и парадигмах, то смело можете пропускать эту часть статьи. Но если, читая определения, Вы чувствуете, что это просто набор слов, то не поленитесь прочитать представленный ниже материал. Я надеюсь, он поможет вам разобраться в этой не очень простой для многих программистов теме и начать использовать паттерны в своей работе.
На самом деле паттерны не так сложны для понимания, как кажется на первый взгляд. Давайте проиллюстрируем их примерами, все сразу станет намного понятнее.
Итак, представьте, что вам необходимо разработать сложное приложение представлявшее каркас диалога и передачи данных между людьми, абстрактными Васей и Петей. Вначале мы рассмотрим простую программу того как Вася и Петя будут общаться между собой и производить обмен информацией:
Теперь разобьём эту программу на отдельные части:
У нас получился алгоритм действий для встречи и обмена диска на деньги между двумя индивидуумами.
Теперь разбиваем алгоритм на составляющие так:
У нас как раз и получился набор паттернов (правда очень абстрактный). Зато этот архитектурный паттерн или программная парадигма описывает обмен данными практически любого вида и любой сложности. По сути это аналог всем известного MVC.
Если же мы решим разработать универсальную программу для взаимодействия двух человек, то нам будет недостаточно такого куцего описания. Точнее нам к архитектурному паттерну понадобиться добавить паттерны, которые расширят описание реализации взаимодействия всех частей архитектурного паттерна.
Давайте попробуем составить схему таких паттернов самостоятельно:
В итоге у нас получилась своя схема паттернов.
Теперь, если мы опишем, как конкретно взаимодействуют наши паттерны между собой — то получим рабочие паттерны. Причем паттерны будут достаточно универсальными, чтобы на их основе писать приложения не только для общения людей, но и для общения инопланетян.
Если на основе наших паттернов написать приложение — получим каркас приложения для реализации общения, причем этот каркас можно будет очень легко модифицировать, так как он имеет очень детальную, хорошо продуманную и описанную структуру. Так же на основании нашего каркаса любой разработчик сможет легко написать собственное приложение для общения людей или компьютеров, или даже инопланетян. Ведь ему не нужно будет вникать в тонкости реализации взаимодействия компонентов нашего каркаса, ему будет достаточно знать общую структуру паттернов — архитектуру каркаса приложения, для того, чтобы составить свои правила общения, обмена данными, проверки условий и действий...
Паттерны бывают разнымиДавайте теперь немного углубим наши знания. Дело в том, что паттерны бывают не только архитектурными, на самом деле у паттернов есть несколько классификаций.
Самая часто используемая классификация — это классификация по масштабу. Чаще всего она применяется для паттернов проектирования и делится на три слоя по детализации:
Программистам редко приходится сталкиваться с данным классом паттернов, но все же стоит о нем упомянуть, чтобы иметь хотя бы общее представление. Это самый высокоуровневый класс паттернов. В него входят целые классы паттернов. Например:
И многие другие. Но я надеюсь их уже не нужно расписывать, вы вполне теперь способны продолжить этот список и без моих подсказок.
Какие преимущества дают нам паттерны? Отвечу на этот вопрос, цитируя John Vlissides ( Влиссидес):
Паттерны суммируют опыт множества разработчиков и экспертов, делая его доступным рядовым разработчикам.
Именование паттернов позволяют создать своего рода словарь, с помощью которого разработчики могут понять друг друга намного лучше.
Если в документации к системе указано, на основе каких паттернов она построена, это позволяет быстрее понять структуру системы.
Правильно подобранные паттерны проектирования позволяют сделать программную систему более гибкой, ее легче поддерживать и модифицировать, а код такой системы в большей степени соответствует концепции повторного использования.
Для тех, кого заинтересовали паттерны, советую найти и почитать книги:
2.мурманск зашортил сипу
3.вася зашортил мурманска
4.Вопрос: когда они встретятся с колей?
А.С., Коля Маржов очень любит плечистых.
Поэтому Мурманск встретит его раньше.
В общем то всё верно.
За исключение выбора места для публикации.
Смартлаб — это соцсеть для поболтать на отвлечённые темы.
И публика тут соответствующая.
Поэтому всё, что сложнее теханализа здесь не заходит.
Необходимость паттернов могут понять только практикующие программисты, которые уже столкнулись со стандартными проблемами.
Для местной публики — это как мобильник для попуасов.
Вроде что-то красивое, но зачем непонятно.
Growex, хороша шутка.
А если серьёзно, товам сюда www.ozon.ru/context/detail/id/2457392/
и сюда ru.wikipedia.org/wiki/GRASP
Growex, чтобы говорить со знанием дела.
И понимать, что кроме таймингов есть масса других вещей.
Growex, а писать то её кто будет и по каким правилам ?
Или она сама с неба свалится ?