Factory tasarımına uygun bir sınıf yapmak için bir Factory sınıfı olmalı ve bu sınıfta createXXX şeklinde bir method bulunmalıdır. createXXX.. methodu bir interface , abstract class veya class döndürebilir. create methodu aldığı parametre değerlerine göre veya çalışma anındaki konfigurasyon veya anlık durum bilgilerine göre (örneğin zaman , sistem bilgisi vs.) farklı class'lardan bir tercih yapmalı ve bulduğu class'ın nesnesini yaratıp döndürmelidir. Bu şekilde Factory class'ını kullanan nesnelerin nasıl yaratılacağı ve hangi class'tan yaratılacağı ile ilgilenmez. Aşağıda bir factory class genel yapısı bulunmaktadır.
public class Factory { public A create****() { // burada parametre girilebilir de. if (kosul1) { // koşul uyuyor ise return new X(); } else if (kosul2) { // koşul uyyor ise return new Y(); } else if (kosul3) { // koşul uyyor ise return new Z(); } else { // hiç bir koşula uymuyor ise return new T(); } } }
Burada eğer A class'ı bir interface ise X , Y , Z , T class'ları bu interface'si implements etmiştir. Eğer abstract class veya class ise X , Y , Z , T class'ları A class'ını extend etmiş olması gerekmektedir.