创建模式-工厂模式

本文介绍了简单工厂模式的概念及其应用场景,并通过一个数据访问模块的例子详细解释了如何使用简单工厂模式来支持多种数据库。此外,还讨论了抽象工厂模式的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单工厂模式又叫静态工程模式,它主要是使用一个工厂类根据传入的参数来创建一个继承于同一个基类的多个不同子类的实例。

假如你需要编写一个数据访问模块,用于支持对Sql ServerOracle等多种数据库的支持,就可以考虑使用工厂模式来完成,例如:

    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

如此以来就提供了一种由应用层动态改变创建工厂的可能,当然你可以通过多个工厂类来实现抽象工厂的功能.但抽象工厂更适合于创建的各个对象最上层接口存在一定的关系,这样就可以使整个创建过程趋于统一和标准.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值