Factory Method
Context: Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
public interface IProduct{ void Operation();}
public class ConcreteProductA : IProduct{ public void Operation() => Console.WriteLine("Product A");}
public abstract class Creator{ public abstract IProduct FactoryMethod();}
public class ConcreteCreatorA : Creator{ public override IProduct FactoryMethod() => new ConcreteProductA();}
// UsageCreator creator = new ConcreteCreatorA();IProduct product = creator.FactoryMethod();product.Operation();Real-world usage example
Section titled “Real-world usage example”Logging frameworks: Different loggers (file, database, cloud) are created by corresponding factory methods. The application code only knows the ILogger interface; the concrete logger is decided by configuration or environment.
Example: In ASP.NET Core, ILoggerFactory uses factory method pattern to create logger instances for different categories. The CreateLogger method is a factory method that returns an ILogger for a given category name.