Tasarım Desenleri : Abstract Factory
24 Ocak 2010 – 18:45Bu desen Factory Method desenine çok benzer. Amaç yine aynıdır. Sistemden nesnelerin oluşma işini soyutlar. Abstract Factory benzer özellikleri olan nesne fabrikalarını gruplar. İçinde birden fazla fabrika vardır.
Örneğimizde birden fazla türde database’de kaydetme ve sorgulama işlemlerini gruplamak için soyut fabrikayı kullanıyoruz : 
Kısaca kodlarına da bakalım :
Önce ürünlerimizin gerçek ve soyut sınıflarını yazıyoruz.
Kaydetme.cs
{
void kaydet(string cumle);
}
SQLBaglanti.cs
{
{
MessageBox.Show(”sql’e kaydedildi”);
}
}
AccessBaglanti.cs
{
{
MessageBox.Show(”access’e kaydedildi”);
}
}
Komut.cs
{
void sorgula(string query);
}
SQLSorgu.cs
{
{
MessageBox.Show(”sql’de sorgu oluştu”);
}
}
AccessSorgu.cs
{
{
MessageBox.Show(”access’de sorgu oluştu”);
}
}
BaglantiFabrikası.cs
{
Kaydetme kaydetmeİşiYap();
Komut sorgulamaİşiYap();
}
SQLFabrikası.cs
{
{
return new SQLBaglanti();
}
{
return new SQLSorgu();
}
}
AccessFabrikası.cs
{
{
return new AccessBaglanti();
}
{
return new AccessSorgu();
}
}
Fabrika.cs
{
{
{
return new SQLFabrikası();
}
else if (tip == “access”)
{
return new AccessFabrikası();
}
}
}
ve kullanmak istediğimiz yer :
Komut cmd = fab.sorgulamaİşiYap();
Kaydetme cn = fab.kaydetmeİşiYap();(NOT: UML, Tasarım Desenleri sitesinden alınıp düzenlenmiştir.)
cmd.sorgula(”");
cn.kaydet(”");
return new SQLFabrikası();//if’lere girmez ise bu olacak