Factory (Fabrika) Tasarım Deseni

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();
}