zoukankan      html  css  js  c++  java
  • 实战才是王道:工厂模式、三层架构、反射、多数据库问题

    无废话,先看结构图:

    核心代码:

    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数据库的升级,主要是修改一下不同数据库之间的语法问题。到这里你是否觉得很爽?

    最后上代码,下载地址:https://files.cnblogs.com/AlexQY/WFA-Salary.zip,开发工具是VS2012+Sqlite,只提供雏形代码,项目还未完成,结构已经清晰了!

    设计模式看了一堆,工厂模式看了一堆,有几个是真正理解并应用的?实战才是王道!

  • 相关阅读:
    dfs模板(真心不会深搜)
    背包九讲文档
    POJ3414—Pots(bfs加回溯)
    统计元音
    前m大的数(哈希入门)&&sort
    数据结构实验:哈希表
    More is better
    畅通工程&&How Many Tables
    OpenCV学习:Mat结构中的数据共享机制
    VC++ :实现简单的文件拖放(Drag and Drop)功能
  • 原文地址:https://www.cnblogs.com/AlexQY/p/3121726.html
Copyright © 2011-2022 走看看