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");}Real-world usage example
Section titled “Real-world usage example”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.