Заметки про паттерны проектирования

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

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

Паттерн «Наблюдатель» определяет отношение «один-ко-многим» между объектами таким образом, что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых объектов.

Паттерн «Декоратор» динамически наделяет объект новыми возможностями и является гибкой альтернативой субклассированию в области расширения функциональности.

Паттерн «Фабрика» инкапсулирует подробности создания класса. Фабричный метод отвечает за создание объектов и инкапсулирует эту операцию в субклассе. Паттерн «Фабричный метод» определяет интерфейс создания объекта, но позволяет субклассам выбрать класс создаваемого экземпляра. Таким образом «Фабричный метод» делегирует операцию создания экземпляра объекта.

Паттерн «Абстрактная фабрика» предоставляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов, без указания их конкретных классов. Фабричный метод основан на наследовании: создание объектов делегируется субклассам, реализующих фабричный метод для создания объектов. Абстрактная фабрика основана на композиции: создание объектов реализуется в методе, доступ к которому осуществляется через интерфейс фабрики. Задача фабричного метода — перемещение создания экземпляра в субклассы. Задача Абстрактной фабрики — создание семейств взаимосвязанных объектов без зависимости от их конкретных классов.

Паттерн «Одиночка» направлен на создание уникальных объектов, существующих в одном экземпляре.

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

Паттерн «Адаптер» преобразует интерфейс класса к другому интерфейсу, на который рассчитан клиент. Адаптер обеспечивает совместную работу классов, невозможную в обычных условиях из-за несовместимости интерфейсов.

Паттерн «Фасад» предоставляет унифицированный интерфейс к группе интерфейсов подсистемы

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

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

Всем спасибо за внимание!

Средняя зарплата в IT

110 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 8 813 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 9

    +4
    Эээ
    И о чем этот пост, простите?
    Ни грамма малейшей информации — для того, кто знаком с паттернами проектирования, и так все это известно, для новичка ничего не понятно.
      +1
        +2
        На какой-то реферат похоже…
          –8
          все вы правы по своему, но тут предельно все разжевано, как раз для новичков, и как раз для предотвращения нападков аля «ни грамма информации» или «это похоже на реферат» я указал в САМОМ НАЧАЛЕ статьи, что это мои заметки, и если вы это прочли, значит вы знали, что от этой статьи следует ожидать
            +5
            Вы не понимаете важного момента: от статей на хабре в принципе ожидают другого. И если вы напишите в статье, что её следовать трактовать как-то иначе, это не сделает её автоматически хорошей.
              0
              Русские названия сбивают с толку. Если пишете для новичков, то приводите хотя бы оригинальный англоязычные названия. Т.е. если и есть от этого хоть какая-то польза (собеседование, еще что-то), то все-равно нужно ориентироваться в оригинальных именованиях.
              +4
              Похоже, как будто из Википедии скопировали по одному первому абзацу каждой статьи. Там всё это тоже есть и гораздо подробнее с примерами. Мне, например, ничего не понятно из определения. А что бы понять, надо посмотреть пример кода.
                0
                В той же Википедии есть хотя бы примеры кода и более подробное описание. Думаю, что новичкам как раз это важнее. В чем тогда смысл вашей статьи?

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

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое