無廢話,先看結構圖:
核心代碼:
public interface IField { /// <summary> /// //通過SQL得到數據列表 /// </summary> /// <param name="cols">列名,可以用*</param> /// <param name="where">條件</param> /// <param name="orderBy">排序</param> /// <returns></returns> DataTable GetTable(string cols,string where,string orderBy); /// <summary> /// 根據主鍵刪除數據 /// </summary> /// <param name="appid"></param> /// <returns></returns> bool Delete(string appid); }
public class FieldDal : DalBase, IField { public FieldDal() { this.TableName = "T_Fileds"; this.PkField = "AppId"; } }
public class FieldBll { private IField field = DalFactory.CreateField();//工廠創建對象 public DataTable GetTable(string cols, string where, string orderBy) { return field.GetTable(cols, where, orderBy); } public bool Delete(string appid) { return field.Delete(appid); } }
工廠來了(使用反射):
public sealed class DalFactory { private static readonly string DbType = ConfigurationManager.AppSettings["DbType"]; private static readonly string AssemblyPath = ConfigurationManager.AppSettings["DAL"]; public static IAdmin CreateAdmin() { IAdmin admin = (IAdmin)Assembly.Load(AssemblyPath).CreateInstance("Dals." + DbType + "Dal.AdminDal"); return admin; } public static IField CreateField() { IField admin = (IField)Assembly.Load(AssemblyPath).CreateInstance("Dals." + DbType + "Dal.FieldDal"); return admin; } }
現在客戶說了,軟件不錯,我們准備升級MSSQL版本,怎么辦呢?
我們要做的就是增加MSSQL數據庫的DAL層,然后修改APP.CONFIG配置文件
你可能只需要10分鍾就能完成SQLITE到MSSQL數據庫的升級,主要是修改一下不同數據庫之間的語法問題。到這里你是否覺得很爽?
最后上代碼,下載地址:http://files.cnblogs.com/AlexQY/WFA-Salary.zip,開發工具是VS2012+Sqlite,只提供雛形代碼,項目還未完成,結構已經清晰了!
設計模式看了一堆,工廠模式看了一堆,有幾個是真正理解並應用的?實戰才是王道!