Skip to content

Latest commit

 

History

History
61 lines (59 loc) · 8.47 KB

patterns.md

File metadata and controls

61 lines (59 loc) · 8.47 KB
  1. Оглавление
  2. ООП
  3. SOLID
  4. Порождающие паттерны
  5. Структурные паттерны
  6. Поведенческие паттерны
  7. Идиомы
  8. MVC
  9. Внедрение зависимости (Dependency injection, DI)
  • ООП:
    • Абстракция - обобщение без конкретики, выделение существенных свойств и связей.
    • Полиморфизм - объекты разных типов имеют одинаковый интерфейс использования, но различную реализацию.
    • Инкапсуляция - объединение данных и методов, работающих с ними в одном компоненте. Так же разграничивает доступ к свойствам компонента, если данные или методы должны быть доступны "извне", то объявляем их публичными, если нет, то приватными.
    • Наследование - механизм, позволяющий описывать новый класс на основе существующего
  • SOLID: #TODO https://habr.com/ru/company/1cloud/blog/522258/
    • Какой профит? -
    • Single Responsibility Principle - у класса должна быть только одна причина для изменения
    • Open-Closed Principle - должна быть возможность расширить класс без его изменения (например, обертку для класса или сделать наследника). Т.е. должна быть возможность добавления новой функциональности, без изменения исходной логики модуля.
    • Liskov Substitution Principle - поведение наследующих классов не должно противоречить поведению, заданному базовым классом, то есть поведение наследующих классов должно быть ожидаемым для кода
    • Interface Segregation Principle - слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы программные сущности маленьких интерфейсов знали только о методах, которые необходимы им в работе
    • The Dependency Inversion Principle - Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций
  • Порождающие паттерны: описывают то, как создавать объекты без внесения в программу лишних зависимостей.
    • Factory Method - предлагает создавать объекты не напрямую, а через вызов особого метода, внутри которого взависимости от внешних параметров, будет создаваться экземпляр класса. Помогает, когда заранее неизвестен тип объекта, с которым будет работать дальнейший код. (Пример с различными модемами.)
    • Abstract Factory -
    • Builder -
    • Prototype -
    • Singleton - гарантирует, что у класса есть только один экземпляр и предоставляет к нему глобальную точку доступа.
  • Структурные паттерны: описывают различные способы посторения связей между объектами.
    • Adapter - это объект проводник, который позволяет работать между собой нескольким классам, с несовместимыми интерфейсами, трансформируя интерфейс или данные одного объекта в такой вид, чтобы он стал понятен другому объекту. (Например один класс работает с xml, второй с json)
    • Bridge -
    • Composite -
    • Decorator - объект обертка, который помимо вызова базовой функциональности, выполняет какие-то дополнительные действия.
    • Facade - простой интерфейс для работы с более сложной подсистемой. Может иметь урезанный интерфейс, не имеющей всех функиональности, которую можно достичь используя сложную подсистему, но предоставляет все фичи, которые нужны клиенту и скрывает от него все остальное.
    • Flyweight -
    • Proxy -
  • Поведенческие паттерны: описывают спопосбы эффективной коммуникации межлу объектами.
    • Chain of Responsibility -
    • Command -
    • Iterator - класс для обхода контейнера, который вынесен отдельно от самого контейнера. Позволяет создать одинаковый интерфейс обхода, для различных контейнеров.
    • Mediator (Посредник) - перенос зависимостей между объектами в отдельный класс "посредник", который будет знать кому нужно перенаправлять тот или иной запрос. Благодоря этому, компоненты системы будут зависить только от посредника, а не от других компонентов.
    • Memento (Снимок) -
    • Observer -
    • State -
    • Strategy -
    • Template Method -
    • Visitor -
  • Идиомы: Низкоуровневые паттерны, применимые в рамках одного языка программирования.
  • MVC:
    • Model - предоставляет данные и реагирует на команды контроллера, изменяя свое состояние.
    • View - отвечает за отображение данных модели пользователю, реагируя на изменения модели.
    • Controller - реагирует на действия пользователя, оповещая модель о необходимости изменения.
  • Внедрение зависимости (Dependency injection, DI): это паттерн проектирования, который заключается в передаче зависимостей внешним образом, вместо того, чтобы объекты создавали свои зависимости самостоятельно. Суть DI заключается в том, что зависимости инъектируются в объекты извне, что делает объекты более гибкими, легкими в тестировании и снижает связанность между объектами.

В DI реализуется через конструкторы, методы или свойства объектов. Конструкторы - наиболее распространенный способ реализации DI, при котором зависимости передаются через параметры конструктора.

  • DRY:
  • data driving development:
  • ****: