Форум
.NET
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, Ночной Смотрящий, Вы писали: НС>Здравствуйте, Sharov, Вы писали: S>>>>Почему же неразрываемая и не настраиваемая -- а паттерн декоратор на что? НС>>>А при чем тут наследование? S>>Как причем? Декоратор реализуется в первую очередь посредством наследования НС>Внезапно. Нет, не реализуется в первую очередь он наследованием, там может использоваться наследование если в конкретном языке нет способов поудобнее. А может и не использоваться. НС>Возьмем, к примеру, [url=https://en.wikipedia.org/wiki/Decorator_pattern#C#]пример из википедии[/url]. Наследование там только в двух местах, SecurityPackage : BikeAccessories и SportPackage : BikeAccessories. На практике так редко кто делает, вместо этого неабстрактный BikeAccessories содержит список каких нибудь BikeParts обеспечивая тем самым реально динамическое изменение поведения, не зашитое в коде. S>>>>+ ключевое слово new для разрыва реализации. НС>>>Ключевое слово new ничего не разрывает, потому что кастинг к базовому классу его игнорирует. S>>Разрывает cлишком сильную связность между предком и наследником. НС>Нет, не разрывает. Это просто синтаксический сахар, ровно то же самое можно получить просто добавлением префикса New к названию метода или чем то аналогичным. В какой то мере разрывает связь не new, а возможность explicit реализации интерфейса, но это уже далеко не классический мейнстримовый ООП и имеет весьма ограниченную область применения.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …