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,只提供雏形代码,项目还未完成,结构已经清晰了!

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

  • 相关阅读:
    tcl中指定随机数种子
    redis的三种连接方式
    js代码统计table中某一列的值
    CRF从HMM的演进
    SVM中的一些问题
    bert损失函数
    SQL 注入笔记
    20200818 千锤百炼软工人第四十四天
    20200816 千锤百炼软工人第四十三天
    20200816 千锤百炼软工人第四十二天
  • 原文地址:https://www.cnblogs.com/AlexQY/p/3121726.html
Copyright © 2011-2022 走看看