Введение к серии статей по описанию шаблонов проектирования, приведена их классификация, ссылки на детальное описание основных шаблонов с примерами.
Для кого серия статей по шаблонам проектирования?
Статья является вводной для серии записей по шаблонам построения программного кода приложений. Статьи посвящены описанию шаблонов проектирования программного обеспечения с примерами использования и предназначена в первую очередь для новичков. Для тех, кто только начинает знакомиться с этой важной частью искусства программирования. Поэтому основной целью было простым языком познакомить, зачем паттерны нужны, когда их полезно использовать, достоинства того или иного шаблона.
Зачем нужны шаблоны проектирования
Шаблон проектирования, или паттерн, — это типовой метод решения определенной задачи при разработке программного обеспечения. Может возникнуть вопрос: а без них можно? Можно. Тогда, зачем они нужны? Давайте разбираться.
Во-первых, они позволяют упростить разработку программного обеспечения за счет использования типовых архитектурных методов решения встающих задач. Другими словами: ребята, уже есть хороший, удобный велосипед, не надо его изобретать.
Во-вторых, шаблоны проектирования позволяют создавать надежный, легко модифицируемый код приложения. Достигается это за счет как раз первого утверждения. Другими словами: ребята, неглупые дядьки уже придумали методы решения типичных задач проектирования, которые гарантированно упростят вам жизнь в будущем.
А так ли уж нужны эти шаблоны?
Как известно, в этом мире за все надо платить. Чем же программист расплачивается за паттерны? В нашем случае платой является усложнение кода программы, ее объема. Но, как по мне, утверждение насчет усложнения достаточно неоднозначно. С одной стороны шаблоны усложняют программный код, могут увеличить его объем. Но с другой стороны использование шаблонов проектирования позволяет упростить внесение изменений в код программы в процессе разработки или сопровождения, снизить трудоемкость отладки ПО после изменений. Далее, попробуйте представить, где сложнее разбираться: в простыне с кодом, где логика автора прослеживается с большим трудом, или со структурированным кодом, в котором используются широко известные типовые методы проектирования?
По моему напрашивается вывод — многое зависит от конкретной ситуации и перспективы проекта: это, например, сложность и функционал создаваемого приложения, длительность его сопровождения, частота возможных изменений и т.п. На мой взгляд, шаблоны проектирования есть смысл использовать в достаточно серьезных приложениях, а в простеньких программах это будет пушечная пальба по воробьям. Предполагаю, что сейчас могут раздаться протестующие вопли упомянутых артиллеристов, поэтому повторюсь — это мое личное мнение.
При изучении шаблонов сложность, на мой взгляд только в одном — собраться, найти время и мотивацию напрячь мозги, чтобы разобраться в этих самых паттернах, как правильно и к месту их применять. А думать — это труд не простой. Но оно того стоит, тем более, что думать в жизни всегда весьма полезно.
Виды шаблонов проектирования
Существует множество шаблонов, каждый из которых решает определенный круг задач. Например, надо разделять решения для построения взаимосвязей элементов кода и архитектурные шаблоны, определяющие архитектуру приложения, его логику.
На этом, думаю, вступление можно закончить по одной простой причине. Тот, кто читает эту статью, видимо уже набил нужное количество предназначенных ему судьбой шишек и задумался над тем, как же надо создавать надежное и гибкое приложение. Как говорится, клиент созрел. Кстати, я убежден, что условие «зрелости»(читай, момент, когда разработчик начинает интересоваться, а как надо делать, чтобы потом не крыть себя нехорошими словами?) очень важно для изучения этой темы, поскольку является хорошим стимулом для того, чтобы освоить этот достаточно трудоемкий аспект разработки.
Все те же умные дядьки наплодили достаточно много этих самых шаблонов, предназначенных решать определенный круг задач. Например, надо разделять решения для построения взаимосвязей элементов кода и архитектурные шаблоны, определяющие архитектуру приложения, его логику. Поэтому их стали группировать. Удобно это делать по их назначению.
Основные типы шаблонов проектирования
Порождающие шаблоны проектирования — решения по созданию программных объектов без внесения в приложение жестких взаимозависимостей между ними. Другими словами это решения, которые позволяют строить гибкие, легко модифицируемые приложения. Итак,
Повторюсь, порождающие шаблоны проектирования — это типовые приемы, используемые в процессе создания программных сущностей. Их основное назначение сделать ваше ПО более гибким и простым при его будущих изменениях. Да, они усложняют сам процесс создания объектов, но зато в дальнейшем вносить изменения в программный код будет намного проще. А ведь практика доказала, что сопровождение приложений в разы превышает затраты на его создание!
Cтруктурные шаблоны проектирования — определяют различные способы построения структуры приложения:
Структурные шаблоны проектирования — это набор типовых приемов при построении архитектуры вашего приложения. Проще говоря, это шаблоны построения взаимодействия программных сущностей(классов, объектов и прочее) для создания эффективного и гибкого приложения.
Поведенческие шаблоны проектирования — решают задачи эффективной взаимосвязи между объектами приложения:
- chain of responsibility;
- command;
- iterator;
- mediator;
- memento;
- observer;
- state;
- strategy;
- template method;
- visitor.
По мере подготовки материала строки перечислений постепенно будут превращаться в ссылки на детальное описание шаблона с примерами. А пока на этом все. Желаю успехов!