Factory (Fabrika) Tasarım Deseni

Murat Süzen
Sep 20, 2016 · 1 min read

Factory (Fabrika) Tasarım Deseni soyut birbiriyle ilişkili yada bağlı n tane sınıfların tek bir arayüz ile oluşturulmasını sağlar. Aşağıdaki örnekte farklı veritabanı bağlantı yapılarımızın olduğunu düşünelim. Bu yapıları OracleDbConnection,MySqlDbConnection,MsSqlDbConnection isimli sınıflarımızda tanımlıyoruz. Bu sınıflarımızdan hangisinin oluşmasına karar veren DbConnectionFactory sınıfımızın içerisinde bulunan createConnection metodu bu görevi üstlenmiştir. Enum ile tanımladığımız tiplerimize göre createConnection metodu aldığı parametreye göre ilgili sınıfı oluşturmuş olacaktır. Projeye buradan ulaşabilirsiniz.

public interface IDbConnection
{
String getConnection();
}
public class OracleDbConnection : IDbConnection
{
public string getConnection()
{
return "Oracle Data Connection";
}
}
public class MySqlDbConnection : IDbConnection
{
public string getConnection()
{
return "MySql Data Connection";
}
}
public class MsSqlDbConnection : IDbConnection
{
public string getConnection()
{
return "MsSql Data Connection";
}
}
public enum DbConnectionType
{
Oracle,
MySql,
MsSql
}

public class DbConnectionFactory
{
public static IDbConnection createConnection(DbConnectionType dbConnType)
{
switch (dbConnType)
{
case DbConnectionType.Oracle:
return new OracleDbConnection();
case DbConnectionType.MySql:
return new MySqlDbConnection();
case DbConnectionType.MsSql:
return new MsSqlDbConnection();
}
return null;
}
}
static void Main(string[] args)
{
var dbConnection = DbConnectionFactory.createConnection(DbConnectionType.MsSql);
string val = dbConnection.getConnection(); Console.WriteLine(val); Console.ReadLine();
}

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade