我一直在研究"四个设计模式的帮派的设计模式"。
我需要设计数据层来处理多个数据库,并在需要时扩展功能。数据库可以是SQL,一个XMl或一些外部系统数据库。
要遵循什么样的好设计模式?
修改 基于建议,我尝试在数据层中实现DAO和Factory模式。在某种程度上,我可以达到目的。 但是根据GOF设计模式,数据提供者名称决定了我可以调用哪个数据库对象。 如下。我在哪里尝试使图层动态,以便可以处理多个数据库。如果我遵循以下模式,那么我只能在一个应用程序中访问一个数据库。
如果有人看过Gang of Four Design模式,那么请指导我。
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();
}
}
}
答案 0 :(得分:1)
您应该查看Repository Pattern和Data Access Object Pattern
存储库模式:在许多应用程序中,业务逻辑从数据存储(如数据库,SharePoint列表或Web服务)访问数据。直接访问数据可能会导致以下结果: 重复的代码 编程错误的可能性更高 业务数据类型不佳 难以集中数据相关的策略,如缓存 无法轻松地与外部依赖关系单独测试业务逻辑
数据访问对象:在计算机软件中,数据访问对象(DAO)是为某种类型的数据库或其他持久性机制提供抽象接口的对象。通过将应用程序调用映射到持久层,DAO提供了一些特定的数据操作,而不会暴露数据库的细节。
答案 1 :(得分:1)
存储库是要走的路。当我不得不使用Oracle和SQL数据库时,我已多次使用它。这可能对您有用:http://www.primaryobjects.com/CMS/Article108.aspx