Рисунок декоратора Использование:Как расширить запечатанный класс дизайном дизайна?
Любой может показать пример того, как расширить герметичные функциональные возможности класса Декор.
Рисунок декоратора Использование:Как расширить запечатанный класс дизайном дизайна?
Любой может показать пример того, как расширить герметичные функциональные возможности класса Декор.
Невозможно наследовать от sealed class в .NET. Итак, если вы хотите создать декоратор, который наследует ваш запечатанный класс, тогда ответьте - это невозможно.
public class Decorator : SealedClass // not possible
Если запечатанный класс реализует некоторый интерфейс или наследует некоторые базовый класс, то вы можете создать декоратор, который наследуется же класс/интерфейс. Decorator не будет выглядеть как ваш класс для клиентов, но вы сможете использовать его для украшения своего класса.
public sealed class SealedClass : InterfaceA
public class Decorator : InterfaceA
Другой вариант - создать новый интерфейс (он может выглядеть точно так же, как ваш закрытый интерфейс класса) и реализовать декоратор для этого интерфейса. Затем создайте герметичный класс Adapter для этого интерфейса. Клиенты будут использовать ваш новый интерфейс. Вы сможете украсить адаптер
public class Decorator : InterfaceB // same members as SealedClass have
public class Adapter : InterfaceB
{
private SealedClass adaptee;
public Adapter(SealedClasss adaptee)
{
this.adaptee = adaptee;
}
public int Member1()
{
return adaptee.Member1();
}
// etc for each member of SealedClass
}
Выполняете ли ваш герметичный класс какой-либо интерфейс или используете базовый класс? Было бы неплохо увидеть определение класса здесь –