Паттерны проектирования. Введение: Представляем Вашему вниманию курс по изучению паттернов проектирования на языке PHP. Стоит отметить, что паттерны – это понятие актуально для любого языка, поддерживающего объектно-ориентированный подход к программированию. А значит, можно сделать вывод, что паттерны описывают некое взаимодействие между классами. Хотелось бы отметить, что паттерн проектирования или шаблон проектирования — это часто встречающееся решение определённой проблемы при проектировании архитектуры веб-приложения или любой другой программы. По сути – это способ решения периодически возникающих проблем, а значит некоторых типовых задач. Вы должны понимать, что паттерн – это не библиотека и не определенный набор функций или методов, это не готовое решение, которое можно взять и скопировать. Это, в первую очередь способ, или некая методика по решению той или иной проблемы, которую потребуется написать самостоятельно и, возможно, адаптировать под конкретную реализацию. В данном курсе будут рассмотрены основные паттерны, которые наиболее часто используются при программировании на языке PHP. Как обычно, изложение материала построено от простого к сложному, а значит, в начале будут рассматриваться элементарные паттерны, состоящие из одного или парочки классов, и далее постепенно, сложность, как и структура примеров, будет усложняться. При этом в каждом уроке, с нуля будет написан код для соответствующего паттерна, опираясь на определенные примеры из области веб-программирования. Урок 1. Паттерны проектирования. Singletone: От автора: приветствуем Вас в первом уроке Премиум курса по изучению паттернов проектирования на языке PHP. Справедливости ради стоит отметить, что паттерны – это понятие актуально для любого языка, поддерживающем объектно-ориентированный подход к программированию. А значит паттерны описывают некое взаимодействие между классами. Непосредственно в этом видео мы с Вами определимся с понятием паттерны проектирования, то есть поговорим о том, что это такое, зачем они применяются, какие проблемы решают, на какие группы их разделяют, и вообще стоит ли изучать данную тему. Помимо этого, мы рассмотрим один из представителей группы порождающих паттернов – шаблон проектирования Singletone. Таким образом, Вы узнаете в каких случаях его удобно применять, какие основные условия необходимо соблюдать для его реализации и, конечно же, как его реализовать. Урок 2. Паттерны проектирования. Multitone. Статическая фабрика: От автора: на прошлом уроке мы с Вами рассмотрели паттерн проектирования Singleton и выяснили, что данный паттерн гарантирует единственный экземпляр для некого класса. Но бывают ситуации, когда необходимо создать несколько именованных объектов определенного класса, причем каждый именованный объект должен быть уникален и единственным. В этом случае Singletone использовать нельзя, а значит мы рассмотрим некоторую разновидность данного паттерна, которая была выделена как отдельный шаблон и названа Multitone. Также рассмотрим довольно интересный паттерн, порождающий паттерн под названием статическая фабрика. По итогам данного урока Вы узнаете, как создавать определенное количество именуемых объектов, используя паттерн Multitone. А также, на примере статической фабрики, увидите, как создаются промежуточные классы, задача которых создавать и возвращать объекты других классов. Урок 3. Паттерны проектирования. Фабричный метод: От автора: в предыдущих двух уроках мы с Вами рассмотрели довольно простые паттерны из группы порождающих, которые должны были дать понять Вам, что такое шаблоны проектирования и в чем заключается смысл их использования. Начиная с этого видео, мы переходим к более сложным схемам взаимодействия классов и к более сложным паттернам. Статическая фабрика, рассмотренная на прошлом уроке – это один из представителей так называемых фабрик, которые используются для создания объектов других классов. И поэтому в этом видео мы с Вами рассмотрим более сложный вариант: паттерн фабричный метод, который определяет общий интерфейс создания объектов разрабатываемого проекта. По итогам урока Вы узнаете, как применять шаблон проектирования фабричный метод для создания объектов приложения, какие классы потребуются для реализации паттерна, какие особенности его использования, и какими преимуществами и недостатками обладает рассматриваемый метод. Урок 4. Паттерны проектирования. Абстрактная фабрика: От автора: рассмотренный на прошлом уроке фабричный метод – отличный инструмент для создания объектов классов, но, порой, вместо одного объекта, необходимо создать несколько связанных или зависимых семейств, что, по сути, невозможно в рассмотренной реализации. Поэтому в данном уроке мы познакомимся с Вами с шаблоном «абстрактная фабрика», которая в своей структуре содержит элементы, изученного ранее паттерна и применяется для создания групп объектов, не привязываясь к конкретным классам создаваемых объектов. По итогам данного урока Вы узнаете: что такое «абстрактная фабрика», и какие классы нужны для ее реализации на примере создания объектов подключения и выполнения запросов к различным базам данных. Урок 5. Паттерны проектирования. Строитель: От автора: если Вы работали с фреймворками или же использовали одну из ORM библиотек, то сталкивались с классом конструктора запросов. Данный класс, как правило, используется для создания и выполнения SQL-запроса на сервере системы управления базами данных. Причем объект подобного класса не создается в полной мере при помощи ключевого слова new, потому как полноценное созданное состояние устанавливается только после последовательного вызова определенных методов указанного класса. Каждый из которых изменяет состояние свойств этого объекта и участвует в формировании объекта. Разработчики с классами подобного рода сталкиваются постоянно. Поэтому в данном уроке на примере разработки класса конструктора запросов мы изучим шаблон проектирования «Строитель». По итогам данного урока Вы увидите, как создавать сложные объекты пошагово, используя паттерн «Строитель». Урок 6. Паттерны проектирования. Прототип: От автора: операция копирования – это наиболее часто используемая операция в программировании, но, если с простыми значениями проблем, как правило, не возникает, то копирование объектов с использованием простейшего оператора присваивания не выполнить. Ведь объекты копируются по ссылке, и вместо копии мы получим ссылку на все тот же объект. Объект – как сложный тип данных, подлежит клонированию. Поэтому в данном уроке мы с Вами рассмотрим паттерн проектирования «Прототип», который позволяет копировать объекты, не останавливаясь на подробностях их реализации. По итогам данного урока Вы узнаете: как копировать объекты, используя паттерн «Прототип». Определимся с классами, которые его реализуют, и поговорим о преимуществах и недостатках предлагаемого подхода. Урок 7. Паттерны проектирования. Observer: От автора: начиная с данного урока приступаем к изучению группы поведенческих шаблонов проектирования. Как следует из названия, паттерны указанной группы отвечают за эффективное и безопасное взаимодействие между классами проекта, то есть используются для описания некого поведения логики приложения, уменьшения связности системы и облегчения коммуникации между объектами. Шаблоны указанной группы достаточно полезны, но не все они используются в программировании на PHP ввиду специфики языка и его проектов. Поэтому будут рассмотрены только наиболее востребованные и начнем с шаблона Observer (Наблюдатель). В данном уроке, на основе простейшей системы плагинов, будет рассмотрена структура и составляющие классы паттерна Наблюдатель. Вы узнаете, как реализовать подписку объектов на определенные состояния некого объекта, а также их уведомления при изменении состояния последнего. Урок 8. Паттерны проектирования. Strategy: От автора: при проектировании логики веб-проекта, так или иначе, возникают ситуации, когда необходимо описывать различные схожие алгоритмы, которые должны выполняться и взаимозаменяться во время работы проекта. При этом возникает вопрос, как правильно это сделать, что бы скрипт получился гибким и функциональным? Ответ на указанный вопрос дает шаблон проектирования, под названием Стратегия, который мы будем изучать в этом уроке. По итогам данного урока мы с Вами на примере функционала сохранения различных типов файлов изучим паттерн проектирования Стратегия (Strategy). При этом Вы увидите, каким образом можно описать структуру классов, реализующих схожие алгоритмы, чтобы их можно было использовать при выполнении определенных условий. Урок 9. Паттерны проектирования. Iterator: От автора: массивы данных и коллекции – это наиболее часто используемые типы данных в программировании. Используя соответствующие инструкции, поэтапно обходить их и на каждой итерации выполнять определенные преобразования с полученным элементом. Указанный способ отлично подходит для простых структур, а вот со сложными составными объектами возникают проблемы. Их внутреннее представление скрыто и способ обхода не определен. В данном уроке мы с Вами изучим паттерн Iterator, который решает указанную выше проблему. По тогам данного урока, используя шаблон проектирования Итератор, мы с Вами опишем способ обхода сложной составной коллекции для простой инструкции Foreach.