實戰才是王道:工廠模式、三層架構、反射、多數據庫問題


無廢話,先看結構圖:

核心代碼:

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,只提供雛形代碼,項目還未完成,結構已經清晰了!

設計模式看了一堆,工廠模式看了一堆,有幾個是真正理解並應用的?實戰才是王道!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM