Skip to content

Template Method

Context: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps without changing the algorithm’s structure.

public abstract class AbstractClass
{
public void TemplateMethod()
{
Step1();
Step2();
}
protected abstract void Step1();
protected virtual void Step2() => Console.WriteLine("Default step2");
}
public class ConcreteClass : AbstractClass
{
protected override void Step1() => Console.WriteLine("Step1 implemented");
}

Data importers: A base DataImporter defines steps: OpenSource(), ParseData(), ValidateData(), SaveToDatabase(). Subclasses override only needed steps (CSV importer, XML importer, JSON importer).

Example: In .NET, Stream.Read is abstract; concrete streams override it. IDisposable pattern with Dispose(bool) is a template method. Also, System.Web.UI.Page life cycle methods.