简单工厂模式又叫静态工程模式,它主要是使用一个工厂类根据传入的参数来创建一个继承于同一个基类的多个不同子类的实例。
假如你需要编写一个数据访问模块,用于支持对Sql Server、Oracle等多种数据库的支持,就可以考虑使用工厂模式来完成,例如:
public interface IDataAccess
{
int ExecuteNonQuery(string sql);
} // interface IDataAccess
public class SqlServerAccess : IDataAccess
{
public int ExecuteNonQuery(string sql)
{
return 0;
}
} // class SqlServerAccess
public class OracleAccess : IDataAccess
{
public int ExecuteNonQuery(string sql)
{
return 0;
}
} // class OracleAccess
public enum DatabaseType
{
SqlServer = 0,
Oracle = 1,
} // enum DatabaseType
public class Factory
{
public static IDataAccess Create(DatabaseType type)
{
IDataAccess da;
switch (type)
{
case DatabaseType.SqlServer :
da = new SqlServerAccess();
break;
case DatabaseType.Oracle :
da = new OracleAccess();
break;
default :
da = new SqlServerAccess();
break;
}
return da;
}
} // class Factory
工厂模式中还有一种抽象工厂模式,其实也就是将工厂类也抽象出来,由具体的子类来实现工厂类. 例如:
public interface IFactory
{
IDataAccess Create(DatabaseType type);
} // interface IFactory
如此以来就提供了一种由应用层动态改变创建工厂的可能,当然你可以通过多个工厂类来实现抽象工厂的功能.但抽象工厂更适合于创建的各个对象最上层接口存在一定的关系,这样就可以使整个创建过程趋于统一和标准.