Мне было интересно, можем ли мы рассматривать методы расширения как реализацию шаблона декоратора в C#? поскольку цель та же, но логика реализации, а также концепция могут различаться?Методы расширения - узор декоратора
Спасибо!
Мне было интересно, можем ли мы рассматривать методы расширения как реализацию шаблона декоратора в C#? поскольку цель та же, но логика реализации, а также концепция могут различаться?Методы расширения - узор декоратора
Спасибо!
Шаблон декоратора обычно связан с добавлением поведения к конкретным экземплярам типа независимо от других экземпляров. В случае метода расширения он затрагивает все экземпляры типа, которые скомпилированы в той же области. Я бы сказал, что это не часть шаблона декоратора.
Я думаю, что вы неправильно поняли образец декоратора.
Речь идет не о добавлении новых методов. Речь идет о добавлении новых функций в существующих методов.
Итак, нет, методы расширения не являются реализацией рисунка декоратора.
Я вижу сейчас, но есть ли конкретная реализация декоратора в .NET, не скрытая в какой-то библиотеке, которую мы когда-либо использовали? – Mohtaa
В настоящее время я не знаю ничего от моей головы, но если вы ищете пример, вы можете посмотреть [здесь] (http://stackoverflow.com/a/5551276/572644). Я использовал конкретный, объясняя шаблон. –
Как они вообще похожи на узор декоратора? Методы расширения - это просто синтаксический сахар для вызова статических методов. Статические методы - «простые старые функции». Декоратор - это когда у вас есть объект, который расширяет поведение другого типа объекта, обертывая/делегируя его методы или добавляя новые. – millimoose
Я думаю, что это очень хороший/правильный вопрос для новичка. Я не уверен, почему пустые голоса. –
Я думаю, вы пропустите что-то понять. Конечно, расширение mehtod «украшает» тип, когда вы смотрите на Intelisense. Но посмотрите на хорошую реализацию декоратора, такую как «StreamReader». Вы заметили, что это производный класс от 'Stream' и действительно украшает функциональность Stream. –