Factory Method Design Pattern in C#

Read full article

Defines an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

This structural code demonstrates the Factory method offering great flexibility in creating different objects. The Abstract class may provide a default object, but each subclass can instantiate an extended version of the object.

using System;
using System.Collections;

  class MainApp
  {
    static void Main()
    {
      // An array of creators 
      Creator[] creators = new Creator[2];
      creators[0] = new ConcreteCreatorA();
      creators[1] = new ConcreteCreatorB();

      // Iterate over creators and create products 
      foreach(Creator creator in creators)
      {
        Product product = creator.FactoryMethod();
        Console.WriteLine("Created {0}", 
          product.GetType().Name);
      }

      // Wait for user 
      Console.Read();
    }
  }

  // "Product" 
  abstract class Product
  {
  }

  // "ConcreteProductA" 
  class ConcreteProductA : Product
  {
  }

  // "ConcreteProductB" 
  class ConcreteProductB : Product
  {
  }

  // "Creator" 
  abstract class Creator
  {
    public abstract Product FactoryMethod();
  }

  // "ConcreteCreator" 
  class ConcreteCreatorA : Creator
  {
    public override Product FactoryMethod()
    {
      return new ConcreteProductA();
    }
  }

  // "ConcreteCreator" 
  class ConcreteCreatorB : Creator
  {
    public override Product FactoryMethod()
    {
      return new ConcreteProductB();
    }
  }
Created ConcreteProductA
Created ConcreteProductB

List of Factory Method examples

C# examples

C++ examples

Delphi examples

Java examples

PHP examples

Design Patterns

contents