Реализация шаблона Template Method в C#

Шаблон метод шаблона предусматривает, что абстрактный базовый класс имеет непереопределяемый метод, :этот метод реализует общий алгоритм и не должен переопределяться в подклассах. В 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 #)?

6
задан Dave Schweisguth 13 February 2016 в 16:17
поделиться