Wzorzec projektowy Factory umożliwia tworzenie instancji konkretnych klas w warunkach zależności tylko od abstrakcyjnych interfejsów.

Aplikacja powinna korzystać tylko z interfejsu ShapeFactory (oczywiście tworząc obiekt ShapeFacoryImplementation). Następnie za pomocą Make powinna tworzyć instancje interfejsu Shape i wyłącznie za jego pośrednictwem wywoływać metody klas Circle czy Square.
Aby pozbyć się zależności od klas Circle i Square stworzono jedną metodę Make z parametrem (tradycyjnie byłyby to 2 metody MakeCircle, MakeSquare). Dzięki zastosowaniu interfejsu ShapeFactory można w łatwy sposób dodać kolejną fabrykę. Daje to możliwość korzystania z fabryk wymiennie.
public interface ShapeFactory { Shape Make(string name); } public class ShapeFactoryImplementation : ShapeFactory { public Shape Make(string name) { if(name.Equals("Circle")) return new Circle(); else if(name.Equals("Square")) return new Square(); else throw new Exception( "ShapeFactory nie mogła utworzyć obiektu klasy {0}", name); } }