• Шаблоны для вашего сайта
  • Сделать сайт
  • Реклама
  • Berry CSS
  • Albireo Framework
  • Бесплатный HTML-курс
  • Telegram-канал
  • Обратная связь
MaxSite.org
О создании сайтов и не только
Создание сайтов под ключ (Украина) →
Вход
×
или зарегистрироваться
PHP/ООП
  • Паттерн Singleton в PHP
  • ООП в PHP
  • Композиция и наследование ООП в PHP
  • Шаблоны проектирования для PHP
  • Шаблон «Fluent interface» (Текучий интерфейс)
  • Шаблон проектирования Facade (Фасад)
  • Шаблон Abstract Factory (Абстрактная фабрика) на PHP
  • Шаблон Factory Method (Фабричный метод) на PHP
  • Шаблон Singleton. Трейты (trait) в PHP
  • Шаблон Multiton (Пул одиночек)
  • Шаблон Registry (Реестр)
  • Шаблон Composite (Компоновщик)
  • Шаблон Builder (Строитель)
  • Шаблон Strategy (Стратегия)
  • Шаблон проектирования Adapter (адаптер)
  • Шаблон Observer (Наблюдатель)
  • Шаблон Prototype (Прототип)
  • Шаблон Bridge (Мост)
  • Шаблон Decorator (Декоратор)
  • Шаблон Flyweight (Приспособленец)
  • Шаблон Proxy (Заместитель)
  • Шаблон «Template method» (Шаблонный метод)
  • Dependency injection (внедрение зависимости)
  • Понимание ООП на примере Паскаля
  • Dependency Injection простыми словами
Навигация
  • Шаблоны для MaxSite CMS 22
  • jQuery и JavaScript 6
  • Java и Android 5
  • PHP/ООП 25
  • SQL 17
  • Albireo Framework 11
  • Berry CSS 7
  • CSS, HTML, LESS, SASS 23
  • PHP 37
  • Тайм-менеджмент 9
  • Софт 37
  • SEO 13
  • Git. GitHub 3
  • CodeIgniter 5
  • Landing Page 3
  • Alpine.js 14
  • Фильмы 2
  • Дневник 55

Здесь можно заказать создание сайта (только Украина), шаблона или лендинга. Также вы можете выбрать готовые шаблоны для MaxSite CMS по небольшой цене. Также можно купить отдельные модули, компоненты для вашего сайта.

Шаблон Decorator (Декоратор)

PHP/ООППросмотров: 4000Комментарии: 04 ноября 2019 г.
ООП

Шаблон Decorator используется там, где нужно расширить функциональность существующего класса. Например вы делаете сайт, где используется какой-то компонент (блок, виджет и т.д.). За это отвечает класс компонента. Потом выясняется, что нужно сделать ещё один компонент для другого вывода. Поскольку все компоненты основаны на одном интерфейсе (или абстрактном классе), то проблем нет. И в какой-то момент, вдруг выясняется, что все компоненты должны поддерживать какую-то новую функциональность, например вывод блока оформления до и после самого компонента.

Очевидно, что переписывать все существующие классы не самая лучшая идея, поэтому здесь на помощь и приходит паттерн Декоратор.

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

Посмотрите исходный код на гитхабе.

Классы расширяющие ComponentAbstract отвечают за компоненты. А класс Decorator представляет собой обёртку над ними. Конкретный экземпляр компонента определяется уже в момент инстанцирования.

Паттерн интересен тем, что позволяет отделить программирование классов компонентов от их использования. При этом сам класс декоратора также может развиваться отдельно. Это хороший пример композиции в ООП.


Создание сайтов (Украина) →
Шаблон Flyweight (Приспособленец)
Шаблон Bridge (Мост)
twitter.com facebook.com
Другие записи сайта
У меня теперь есть ASUS Eee
У меня теперь есть ASUS Eee
Модальные окна в Alpine.js
Модальные окна в Alpine.js
Асинхронная загрузка js-скриптов
Асинхронная загрузка js-скриптов
Микро-фреймворк как основа веб-проекта на PHP
Микро-фреймворк как основа веб-проекта на PHP
MaxSite CMS для разработчиков
MaxSite CMS для разработчиков
Как выключать Windows?
Как выключать Windows?
Оставьте комментарий!

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

(обязательно)

MaxSite.org
Как создать свой сайт

Услуги по созданию сайтов, блогов, лендингов
Обратная связь • Реклама на сайте
Карта сайта
Мои проекты
  • Шаблоны для вашего сайта
  • Заказать создание сайта
  • MaxSite CMS
  • Berry CSS (CSS Utilities)
  • Albireo Framework
  • UniCSS (Universal Atomic CSS)
  • Landing Page Framework
  • Бесплатные НТML-курсы
Ссылки
  • Telegram-канал
  • Github
  • Twitter
  • Telegram-бот
  • RSS
© MaxSite.org, 2006-2022. Работает на MaxSite CMS | Время: 0.3201 | SQL: 25 | Память: 4.59MB | Вход