Factory tasarım deseni birbirleri ile ilişkili nesneleri oluşturmak için bir arayüz sağlar ve alt sınıfların hangi sınıfın örneğini oluşturacağına olanak sağlar.
Buradaki amaç istemci tarafından birbirleri ile ilişkili nesnelerin oluşturulma anını soyutlamak, istemci hangi sınıf örneğini alabileceğini bilebilir ama oluşturulma detayları bilmez. Detaylar yani nesnenin nasıl oluşturulacağı soyutlanır. Örneğin oluşturulan sınıfın Singleton olarak oluşturulması gibi.
C# Kod Örneği:
publicclassUser{ // Burada bildirimin gideceği kullanıcıya // ait bilgiler bulunacaktır.}
// UML diyagramındaki IProduct arayüzümüze denk gelmektedir.// İlişkili sınıflarımız bu arayüzü uygulayacaktır.interfaceINotify{voidSendNotification(User user);}
// UML diyagramındaki ConcreteProduct sınıflarına denk gelmektedir.classMailNotify:INotify{publicvoidSendNotification(User user) { // Mail gönderme operasyonu. }}
// UML diyagramındaki ProductFactory sınıfına denk gelmektedir.classNotifyFactory{publicINotifyCreateNotify(string notifyType) {if (notifyType =="SMS") { // Buradaki nesne oluşturma süreçleri bize kalmıştır. // Kullanıcıdan soyutlanmıştır. // Örnek olarak burası Singleton olarak da ayarlanabilirdi.returnnewSmsNotify(); }elseif (notifyType =="MAIL") { // Buradaki nesne oluşturma süreçleri bize kalmıştır. // Kullanıcıdan soyutlanmıştır. // Örnek olarak burası Singleton olarak da ayarlanabilirdi.returnnewMailNotify(); }returnnull; }}