El modelo de plantilla modelo establece que la clase base abstracta tiene un método no invalidable: este método implementa el algoritmo común y no debe anularse en las subclases. En Java, el método de la plantilla se declara final
dentro de la clase base abstracta, en C# la palabra clave sealed
tiene un significado similar, pero no se puede declarar un método no reemplazado sealed
.Implementación del patrón Método de plantilla en C#
public abstract class Base
{
protected abstract AlgorithmStep1();
protected abstract AlgorithmStep2();
public sealed void TemplateMethod() // sealed: compile error
{
AlgorithmStep1();
AlgorithmStep2();
}
}
¿Cómo puedo resolver este problema? ¿Por qué no se puede evitar que un método pueda ser anulado por subclases (en C#)?
Solo puede sellar miembros anulados. La falta de la palabra clave 'abstract' o' virtual' significa que el método ya está sellado. – ChaosPandion