Комментарии 8
Действительно, между декоратором и прокси получается не всегда четкая граница. Однако можно выделить следующие признаки присущие декоратору:
* Декоратор полностью повторяет интерфейс декорируемого объекта.
* Декоратор не обладает полнотой знаний о декорируемом объекте.
* При создании декоратора, ему всегда передается декорируемый объект (прокси всю работу выполняет сам).
Данный вопрос поднимался и в других местах.
* Декоратор полностью повторяет интерфейс декорируемого объекта.
* Декоратор не обладает полнотой знаний о декорируемом объекте.
* При создании декоратора, ему всегда передается декорируемый объект (прокси всю работу выполняет сам).
Данный вопрос поднимался и в других местах.
Декоратор полностью повторяет интерфейс декорируемого объекта.Я не очень понял, что есть интерфейс в таком вот контексте, поясните, пожалуйста.
Да и весь пример с интерфейсом MyDatabase не понятен, честно сказать, в отличие от декоратора HTTP-обработчика. Как именно происходит логирование в этом случае?
Структура MyExecutor ВКЛЮЧАЕТ в себя rich интерфейс MyDatabase, а следовательно, она реализует этот интерфейс. У нас же остается возможность переопределить часть (или все) методы этого интерфейса. Здесь мы перекрываем метод Exec, и заворачиваем в него вызов базового интерфейса. В результате, мы расширяем поведение прототипа, дополняя его профилированием/логгированием запроса.
Предположим, что нам нужно сделать все то же профилирование запросов к базе данных. В этом случае, нам необходимо:
Вместо прямого взаимодействия с базой данных через указатель, нам нужно перейти к взаимодействию через интерфейс (отделить поведение от реализации).
Создать обертку для каждого метода, выполняющего SQL запрос к базе данных.
Но разве это не является прокси, а не декоратором?
да и в первом случае скорее цепочка обязанностей
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Знакомые незнакомцы или еще раз об использовании паттернов проектирования