Шаблоны проектирования — для более быстрого и надежного программирования

У каждого дизайна есть шаблон, и у всего есть шаблон, будь то чашка, дом или платье. Никому не придет в голову прикреплять ручку чашки к внутренней стороне — кроме производителей новинок. Просто доказано, что в практических целях эти детали должны быть прикреплены снаружи. Если вы посещаете занятия по гончарному мастерству и хотите сделать горшок с ручками, вы уже знаете, какой должна быть основная форма. Она хранится у вас в голове в виде, так сказать, шаблона дизайна.

Та же общая идея применима к компьютерному программированию. Определенные процедуры повторяются часто, поэтому нет ничего сложного в том, чтобы придумать что-то вроде шаблонов. В нашем руководстве мы покажем вам, как эти шаблоны проектирования могут упростить программирование.

Что такое шаблоны проектирования?

Термин «паттерн проектирования» был первоначально введен американским архитектором Кристофером Александром, который создал коллекцию многократно используемых паттернов. Его план состоял в том, чтобы вовлечь будущих пользователей структур в процесс проектирования. Затем эта идея была подхвачена рядом ученых-компьютерщиков. Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес (иногда их называют «Банда четырех» или GoF) помогли паттернам программного обеспечения прорваться вперед и получить признание благодаря своей книге «Design Patterns — Elements of Reusable Object-Oriented Software» в 1994 году.

Итак, что же такое паттерны проектирования? Давайте продолжим на нашем предыдущем примере. Для чашки всегда нужны одни и те же основные элементы: дно, стенки и ручка. Это относится ко всем чашкам, будь то кофейные, эспрессо или чайные. Программирование очень похоже: Циклы, которые необходимо выполнить, всегда связаны с параметрами начала и конца. Условия всегда требуют определения операций для того, что делать, когда они выполняются, и что делать, когда они не выполняются. Вычисления всегда выводят результаты для комбинации переменных и так далее. Из множества различных шагов программирования можно создать программную последовательность, которая всегда имеет одни и те же шаги для выполнения определенных задач. Шаблон проектирования — это описание того, как решить проблему.

Ниже приведен простой пример программного паттерна, в данном случае паттерна фабрики:

class Cup
{
    private $cupMake;
    private $cupModel;
    public function __construct($make, $model)
    {
        $this->cupMake = $make;
        $this->cupModel = $model;
    }
    public function getMakeAndModel()
    {
        return $this->cupMake . ' ' . $this->cupModel;
    }
}
class CupMaking
{
    public static function create($make, $model)
    {
        return new Cup($make, $model);
    }
}
$espresso = CupMaking::create('cup', 'espresso'); // Object is created
print_r($espresso->getMakeAndModel()); // Outputs “cup espresso”

То же самое относится к более крупным контекстам и процессам, которые часто используются для решения конкретных задач в последовательности программ. Этот пример кода может быть расширен по мере необходимости, даже для использования в других отраслях с совершенно другими продуктами и процессами. Нет нужды говорить, что это лишь один строительный блок в более обширной части программного обеспечения. Другими словами, паттерны проектирования следует рассматривать как шаблоны, которые уже доказали свою работоспособность на практике.

Каковы различные типы паттернов проектирования?

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

Структурные шаблоны

Структурные паттерны — это готовые шаблоны для отношений между классами. Целью является достижение абстракции, которая также может взаимодействовать с другими решениями — ключевым словом здесь является программирование интерфейсов.

Поведенческие паттерны

Поведенческие паттерны используются для моделирования поведения программного обеспечения. Эти паттерны упрощают сложные процессы управления и мониторинга. Для этого вы можете выбирать между алгоритмами и объектными обязанностями.

Креативные паттерны

Креативные паттерны используются для создания объектов, которые могут упростить проектирование процессов для конкретных экземпляров. Это работает независимо от того, как отдельные объекты создаются и представляются в программном обеспечении.

Со временем появились дополнительные типы шаблонов проектирования, которые не вписываются ни в одну из трех категорий, описанных выше. К ним относятся паттерны объектно-реляционного отображения для хранения объектов и их отношений в реляционной базе данных.

Плюсы и минусы использования паттернов проектирования

Преимущества

Возможность использовать проверенные и испытанные решения позволяет сэкономить время и деньги. Командам разработчиков не приходится постоянно изобретать колесо для решения подзадач в программной процедуре, которые уже были решены много раз ранее. Отдельные паттерны обычно имеют названия, используя общую терминологию проектирования. Это упрощает обсуждения между разработчиками, а также общение с пользователем будущего решения. Документация программного обеспечения также упрощается, если вы используете строительные блоки, которые уже были задокументированы. Эти преимущества также актуальны для сопровождения и дальнейшего развития программы.

Недостатки

Использование паттернов проектирования требует обширных знаний. Наличие шаблонов проектирования может также привести к тому, что люди будут считать, что все проблемы могут быть решены с помощью существующих шаблонов проектирования. Короче говоря, это может ограничить творческий потенциал и желание найти новые (лучшие) решения.

Каковы общие шаблоны проектирования?

Существует более семидесяти паттернов проектирования в различных категориях. Ниже перечислены некоторые важные шаблоны программного обеспечения:

Креативные паттерны

  • Шаблон строителя: Этот паттерн создания отделяет разработку (сложного) объекта от его представления.
  • Шаблон фабрики: Этот шаблон создает объект путем вызова метода вместо конструктора.
  • Модель синглтона: Этот создающий паттерн гарантирует, что класс имеет только один объект и предоставляет глобальный доступ к нему.

Структурные паттерны

  • Композитный паттерн: Этот структурный паттерн специально разработан для работы с динамическими структурами, например, для организации файлов или сжатия данных.
  • Декоратор: Этот паттерн интегрирует дополнительные функции или обязанности в существующие классы.
  • Фасадный паттерн: Этот паттерн предоставляет интерфейс для других систем или подсистем.

Поведенческие модели

  • Паттерн наблюдателя: Этот паттерн передает изменения, внесенные в объект, структурам, которые зависят от исходного объекта.
  • Шаблон стратегии: Этот паттерн определяет семейство взаимозаменяемых алгоритмов.
  • Модель посетителя: Этот паттерн изолирует исполняемые операции таким образом, что новые операции могут быть выполнены без изменения соответствующих классов.
Резюме

Шаблоны проектирования — это готовые модели, которые решают конкретные проблемы, опираясь на проверенные и испытанные концепции. Они строятся на основе реально существующих программных проектов и вовлекают пользователя будущего решения в процесс проектирования. На данный момент паттерны проектирования не ограничены каким-либо одним языком программирования. Это делает их универсальными.

Оцените статью
cdelat.ru
Добавить комментарий