使用设计模式构建通用数据库访问类(5) 我们仍然让DBOperator类自己来管理这个缓冲池,为了实现这个目的,我们需要对DBOperator类做一些变化: 首先,增加两个变量: static DBOperator[] ConnectionPool=new DBOperator[int.Parse(ConfigurationSettings.AppSettings["PoolCount"])]; static int CurrentPosition=-1; 然后,对Instance方法做一些改变: public static DBOperator Instance(string strConnection) { if(ApplicationConfiguration.PooledConnectionCount<1) //没有缓冲 { return CreateNewDBOperator(strConnection); } else { CurrentPosition++; if(CurrentPosition==ApplicationConfiguration.PooledConnectionCount) CurrentPosition=0; if(ConnectionPool[CurrentPosition]==null) { ConnectionPool[CurrentPosition]=CreateNewDBOperator(strConnection); } return ConnectionPool[CurrentPosition]; } } private static DBOperator CreateNewDBOperator(string strConnection) { if(strConnection.IndexOf("provider=")<0) //SqlServer { return new SqlDBOperator(strConnection); } else //other database { return new OleDBOperator(strConnection); } } 这里使用的算法比较简单,只是为了能够比较清楚地说明问题,读者应当能够在实际使用过程中,实现更好的算法。 以上,介绍了一种通用数据库操作类的实现设计方法,希望能够对大家有所启发。笔者设计Websharp中间件的时候,在数据库处理层,采用了上面的方法,取得了很好的效果。