1 Aşağıda açıklanan iki şablon (Factory patten and Abstract Factory pattern) Creational Tasarım şablonu sınıfındadır. Structural Tasarım şablonu sınıflandırmasındaki Bridge Şablonu olması mümkün değildir. Çünkü structural (yapısal) sınıflandırmadaki şablonların amacı sınıflar, sınıf ilişkileri ve sınıf yapılarının hiyerarşilerini değiştirmektir; örneğini yaratarak döndürmek değildir. (Fabrika Şablonu) Factory Pattern Tasarım şablonlarının Creational (Yaratıcı) Sınıflandırmasına aittir Fabrika(Factory) Şablonu Fabrika sınıfı yaratıcıdır; yani bir sınıf tipinin örneğini oluşturur ve döndürür. Soyut bir sınıfın örneğini bir implementasyon sınıfı olarak gerçeklemek için kodun bir kapsüllemesini (encapsulation) oluşturur. Fabrika (factory), bir sınıf için gerekli olan (creational) yaratıcı herhangi bir operasyonu başlatabilir, veriyi çekebilir, düzenleyebilir, durum başlatabilir (oluşturma) ve icra edebilir. Fabrika şablonu fazla sayıda yaratılacak lojiğin olduğu örneklerde uygundur; çünkü gerektiğinde pek çok yerdeki mantıkal yapının değiştirilmesi yerine, herşey fabrika sınıfına taşındığında sadece fabrika sınıfındaki değişiklik yeterli olacaktır. Verilen fabrika şablonu örnekleri kodlamadaki 2 farklı probleme alternatif çözümdür. 1 Design Patterns, Christopher G. Lasater,2010
Problem 1: Ortak bir temel sınıf ile implementasyon sınıflarının farklı yerlerde tanımlanması ve özellikle yaratıcı (creational) lojik işleyişler arasında bir uniform bir düzenin olmaması. Çözüm : Tabanı oluşturan kod ile fonksiyonel bildiriler arasında yaratma işlemlerindeki karar verme süreçlerinde (örneğin hangi tip Suit sınıfı )kapsülleme (encapsulation) oluşturmaktır; Problem 2: Sınıf tipleri sabit, değiştirilmez (immutable) mantıksal kod olarak verildiğinde fabrika sınıfından döndürülmek istenen yeni tiplerle genişletme için, fabrika sınıfında değişiklikler gerektirecektir Çözüm a: (alttaki şekil) SuitFactory içerisinde mantıksal işlevi tek bir yere kapsüllemek aynı lojik için çoklu kodlar yazılmasına olanak sağlar; burada birden fazla mantıksal yapı vardır ve yaratıcı (creational) proses gerçekleştirmektedir. Öyleyse fabrika sınıfı ölçeklenebilir ve kod eklenmesi ile fabrika sınıfının koşul mantığındaki değişiklikler de derlenmelidir. Böylece fabrika sınıfı farklı tiplerin olduğu sınıflar arasında doğrudan değişiklik yapamayacaktır. Soyut sınıfın kendisi Suit sınıfının soyutlamasındaki polimorfik özellikleri kullanarak kendi implementasyon sınıfına arayüz olacaktır.
Çözüm b: (Alttaki sınıf) Fabrika sınıfının soyutlamalarını implementasyonun gerçekleşeceği uygun sınıf tiplerine yöneltmek için miras kullanılması da mümkündür. Abstract Factory Pattern Tasarım şablonlarının Creational (Yaratıcı) Sınıflandırmasına aittir. Fabrika(Factory) şablonunun genişletilmişidir; yukarıda açıklanan Fabrika şablonunda diğer sınıflar uniform olarak yaratılırken, Abstract Factory şablonunda benzer metotlarla ve değişebilen erişim noktaları ile fabrikalara (fabrika sınıflarına) izin veren bir yol sağlanır. Soyut bir fabrika kullanarak implementasyon sınıf tipleri (bunlar fabrikadır) tanımlanabilir; böylece diğer tüm fabrika implementasyonları temel sınıfa bağlanır. Özetle Abstract Factory bir sınıf için farklı şeyler yapan çoklu fabrika sınıfları olduğunda kullanılır. Amaç bu fabrika sınıfları arasındaki uniform yapıyı sağlamaktır. Her birinin birbirinden farklı yaratıcı (creational) mantığının olduğu ve her birinin aynı sınıf tipini belirttiği iki fabrika sınıfı olsun. Bu iki fabrika sınıfı bir örneği oluşturulurken (yaratılırken) değişim göstereceklerdir. Farklı fabrika sınıfları bir Abstract Factory sınıfında birleşirler. Bu sınıflar aynı sınıf tipini döndürmek üzere, değişimli olarak kullanılabilir. Kodları yeniden yazmadan bir fabrika sınıf tipi çağrılarak o fabrika sınıfı çağrılmış olur.
Yukarıdaki her üç şekil de Abstrac Factory örneğidir.