Я прочитал много постов и понимаю, что шаблон декоратора должен добавить функциональность существующему объекту.Однако у меня есть сценарий, в котором одно поведение заменено, а не расширенно.Чтобы продемонстрировать, предположим, что у меня есть эти классы:
public interface IDoStuff {
string DoStuff();
string DoOtherStuff();
}
public class A : IDoStuff {
public A(){}
public string DoStuff() {
....
}
public string DoOtherStuff() {
....
}
}
public class B : IDoStuff {
protected readonly IDoStuff decoratee;
public B(IDoStuff decoratee){
this.decoratee = decoratee;
}
public string DoStuff() {
decoratee.DoStuff();
//More code
}
public string DoOtherStuff() {
....
// This does not call decoratee.DoOtherStuff
}
}
Хотя я украсил метод B.DoStuff
, но его метод DoOtherStuff
является совершенно другой реализацией и вообще не может повторно использовать базовый объект.
Правильно ли я его реализую?Или это совершенно другая модель?