Шаблон метод шаблона предусматривает, что абстрактный базовый класс имеет непереопределяемый метод, :этот метод реализует общий алгоритм и не должен переопределяться в подклассах. В Java шаблонный метод объявляется final
внутри абстрактного базового класса, в C #ключевое слово sealed
имеет аналогичное значение, но непереопределяемый метод не может быть объявлен sealed
.
public abstract class Base
{
protected abstract AlgorithmStep1();
protected abstract AlgorithmStep2();
public sealed void TemplateMethod() // sealed: compile error
{
AlgorithmStep1();
AlgorithmStep2();
}
}
Как я могу решить эту проблему? Почему нельзя предотвратить переопределение метода подклассами (в C #)?