Разрабатывать приложения легко. Проектировать библиотечную зависимость — сложнее. А проектирование каркасов (или фрэймворков) — самая сложная задача. Еще одна сложная задача в объектно-ориентированной программе — разложить систему на объекты. При решении приходится учитывать следующие факторы: инкапсуляцию, уровень наследования, повторное использование, необходимость обслуживания системы, уровень абстрации и т.д.
Шаблоны проектирования помогают в решении этих задач. Шаблоны проектирования представляют наилучшие решения часто встречаемых задач и упрощают повторное использование удачных решений. Что бы программист ни разрабатывал, на каком бы языке он ни писал, если он стремится к хорошему коду, он будет использовать шаблоны проектирования, т.к. он стремится повторно воспользоваться решениями, которые оказались удачливыми ранее.
Все существующие шаблоны проектирования можно разделить на две группы: шаблоны практических решений и архитектурные шаблоны.
Если в проектировании системы паттерны практических решений могут быть и не использованы,то использование архитектурных шаблонов в проектировании любой системы — обязательно! Понимание и использование архитектурного шаблона, применяемого в проектировании системы обязует программиста писать хороший код. Например, использование в структуре программы папок с именами model, view, controller заставляет программиста мыслить понятиями MVC.
В группе архитектурных шаблонов выделяют следующие архитектурные шаблоны проектирования: простой шаблон, MVC, HMVC.
В классическом объектно-ориентированном языке Java простой шаблон означает простой вывод данных из контроллера, которые могут храниться либо в самом контроллере, либо в отдельных файлах ввиде массива, JSON и др.
В языке PHP – вывод данных на экран с разбиением кода на файлы. Шаблонная функция и метод буферизации также являются видами простого шаблона. Следует отметить, что в языке PHP простой шаблон может и не использовать объекнто-ориентированные возможности языка.