Паттерны проектирования Вводное занятие
01 июня 2021

Паттерны проектирования
Вводное занятие

Сегодня говорим про паттерны и антипаттерны проектирования ПО, про их применение, а также про UML-диаграммы, классы, singltone и многое другое ;)
Сегодня изучаем паттерны проектирования. В конце страницы вы найдете видео с лекцией по нижеизложенным материалам.

Темы занятий, которые будут затронуты в рамках изучения паттернов проектирования:
  • Вводное
  • Структурные шаблоны
  • Поведенческие шаблоны
  • Порождающие шаблоны
  • Шаблоны параллельного проектирования и архитектурные шаблоны
  • Что такое метрики и зачем их собирать?

Паттерн

Паттерн (англ. pattern — образец, шаблон, система) — заимствованное слово. Слово «pattern» используется как термин в нескольких дисциплинах и технологиях. Смысл термина «паттерн» всегда уже чем просто «образец», и варьируется в зависимости от области знаний, в которой используется. Слово pattern, в зависимости от контекста, имеет широкий диапазон значений.

  • Паттерн — повторяющийся элемент в различных сферах жизни, в основном в природе и дизайне.
  • Паттерн (психология):
    • набор стереотипных поведенческих реакций или последовательностей действий;
    • объединение сенсорных стимулов как принадлежащих одному классу объектов.
  • Паттерн (информатика) — эффективный способ решения характерных задач проектирования, в частности проектирования компьютерных программ.

    Определение


    Паттерн (англ. design pattern) — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

    Обычно шаблон не является законченным образцом, который может быть прямо преобразован в код; это лишь пример решения задачи, который можно использовать в различных ситуациях.

    4 стадии применения паттернов

    • Ух ты! Я узнал что такое паттерн, надо куда-то его запилить!
    • Ого! Я применил в программе 7 паттернов и стало намного лучше!
    • Ух блин! Как теперь в этой мешанине разобраться кто и куда передает данные?
    • Хм. Надо смотреть что за задача и понимать какой паттерн и в каком варианте может быть полезен.

    UML

    UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, моделирования бизнес-процессов, системного проектирования и отображения организационных структур. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода.

    Диаграммы

    Структурные диаграммы:

    • диаграмма классов;
    • диаграмма компонентов;
    • диаграмма композитной/составной структуры;
    • диаграмма кооперации (UML2.0);
    • диаграмма развёртывания;
    • диаграмма объектов;
    • диаграмма пакетов;
    • диаграмма профилей (UML2.2).
    Диаграммы поведения:
    • диаграмма деятельности;
    • диаграмма состояний;
    • диаграмма вариантов использования.
    Диаграммы взаимодействия:
    • диаграмма коммуникации (UML2.0) / диаграмма кооперации (UML1.x);
    • диаграмма обзора взаимодействия (UML2.0);
    • диаграмма последовательности;
    • диаграмма синхронизации (UML2.0).

    Диаграмма классов


    Диаграмма классов (англ. Static Structure diagram) — структурная диаграмма, демонстрирующая общую структуру иерархии классов системы, их коопераций, атрибутов (полей), методов, интерфейсов и взаимосвязей между ними. Широко применяется не только для документирования и визуализации, но также для конструирования посредством прямого или обратного проектирования.

    Уровни представления

    • Анализа. Класс содержит в себе только набросок общих контуров системы и работает как логическая концепция предметной области или программного продукта.
    • Проектирования. Класс отражает основные проектные решения касательно распределения информации и планируемой функциональности, объединяя в себе сведения о состоянии и операциях.
    • Реализации. Класс дорабатывается до такого вида, в каком он максимально удобен для воплощения в выбранной среде разработки; при этом не воспрещается опустить в нём те общие свойства, которые не применяются на выбранном языке программирования.

    Описание классов и его элементов
    Статические и абстрактные члены
    Связи

    • Обобщение
    • Реализация
    • Зависимость
    • Ассоциация
      • Агрегация
      • Композиция
    Обобщение (наследование)
    Реализация
    Зависимость
    Ассоциация (ссылка)
    Агрегация (отделимая часть – целое)
    Композиция (неотделимая часть – целое)
    Пример
        Singlton

        • Гарантирует, что у класса есть только один экземпляр.
        • Обычно используется для доступа к какому-либо ресурсу.
        Классическая реализация
        Ленивая реализация
        Ленивая потокобезопасная реализация
        Ленивая потокобезопасная реализация с двойной проверкой
        Самая короткая реализация
        В конце урока экс ИТ-директор Logrocon Алексей Лосев расскажет про самые популярные антипаттерны и то, почему ими не стоит пользоваться.
                Вам также может быть интересно