Відповідь

+1
Відповідь
Відповідь надано

Максим, здравствуйте!


Оба паттерна действительно похожи механизмом реализации — оба работают как обёртки. Полагаю, вы уже видели этот кусок из главной статьи:


Декоратор и Заместитель имеют схожие структуры, но разные назначения. Они похожи тем, что оба построены на композиции и делегируют работу другим объектам. Паттерны отличаются тем, что Заместитель сам управляет жизнью сервисного объекта, а обёртывание Декораторов контролируется клиентом.


...поэтому могу предположить, что вопрос для вас не до конца раскрыт.


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

+1
Відповідь
Відповідь надано

Максим, здравствуйте!


Оба паттерна действительно похожи механизмом реализации — оба работают как обёртки. Полагаю, вы уже видели этот кусок из главной статьи:


Декоратор и Заместитель имеют схожие структуры, но разные назначения. Они похожи тем, что оба построены на композиции и делегируют работу другим объектам. Паттерны отличаются тем, что Заместитель сам управляет жизнью сервисного объекта, а обёртывание Декораторов контролируется клиентом.


...поэтому могу предположить, что вопрос для вас не до конца раскрыт.


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