【发布时间】:2014-07-18 16:12:06
【问题描述】:
我一直在研究“四合一设计模式”的设计模式。
我需要设计数据层来处理多个数据库以及如果需要扩展功能。数据库可以是 SQL、XML 或一些外部系统数据库。
应该遵循什么好的设计模式?
编辑: 根据建议,我尝试在数据层实现 DAO 和工厂模式。在某种程度上,我可以直截了当。 但根据 GOF 设计模式,数据提供者名称决定了我可以调用哪个数据库对象。 如下所示。当我试图使图层动态化以便可以处理多个数据库时。如果我遵循以下模式,那么我只能在一个应用程序中访问一个数据库。
如果有人研究过四人组设计模式,请指导我。
public class DaoFactories
{
public static IDaoFactory GetFactory(string dataProvider)
{
// Return the requested DaoFactory
switch (dataProvider)
{
case "ADO.NET.Access": return new AdoNet.Access.AccessDaoFactory();
case "ADO.NET.Oracle": return new AdoNet.Oracle.OracleDaoFactory();
case "ADO.NET.SqlExpress":
case "ADO.NET.SqlServer": return new AdoNet.SqlServer.SqlServerDaoFactory();
case "LinqToSql.SqlExpress":
case "LinqToSql.SqlServer": return new LinqToSql.Implementation.LinqDaoFactory();
case "EntityFramework.SqlExpress":
case "EntityFramework.SqlServer": return new EntityFramework.Implementation.EntityDaoFactory();
// Default: SqlExpress
default: return new AdoNet.SqlServer.SqlServerDaoFactory();
}
}
}
【问题讨论】:
-
听起来像门面。
-
在应用了一些模式后,我试图让我的问题更简短。如果有人可以指导我,那就太好了。谢谢。
标签: design-patterns data-access-layer c#-5.0