三层和接口

首先向大家推荐个博客http://www.cnblogs.com/zhaopei/p/4823359.html ,感觉他写的真的挺不错的。

  三层指的是以下三层

  1. 用户界面表示层(USL)
  2. 业务逻辑层(BLL)
  3. 数据访问层(DAL)

首先,写个数据库访问的接口

  

    public interface ISqlHelper
    {
        int add(string str);
        void select();
        //...省略具体实现,如修改 删除 查询
    }

然后,创建一个Mysql数据库的DAL,和一个Oracle的DAL

    public class DALMsSqlHelper : ISqlHelper
    {
        public int add(string str)
        {        //...省略具体实现
            Console.WriteLine("我是mysql");
            return 1;
        }
        public void select()
        {
            Console.WriteLine("我从Mysql数据库中取数据");
        }
        //...省略具体实现,如修改 删除 查询}public class DALOracleSqlHelper : ISqlHelper
    }
    public class DALOracleSqlHelper : ISqlHelper
    {
        public int addOracle(string str)
        {        //...省略具体实现
            return 1;
        }    //...省略具体实现,如修改 删除 查询

        public int add(string str)
        {        //...省略具体实现
            Console.WriteLine("我是oracle");
            return 1;
        }
        public void select()
        {
            Console.WriteLine("我从Oracle数据库中取数据");
        }
    }

再写一个业务逻辑层

  public class BLLAddStudent
    {
        ISqlHelper SqlHelp = null;
        public BLLAddStudent(ISqlHelper sqlhelper)
        {
            SqlHelp = sqlhelper;
        }
        public int addStudent()
        {
            string str = "";  //...省略具体实现
            return SqlHelp.add(str);
        }
        public void select()
        {
            SqlHelp.select();
        }
    }
   public class Program
    {
        public static void Main(string[] args)
        {
            ISqlHelper sqlhelper = new DALOracleSqlHelper();
            BLLAddStudent s = new BLLAddStudent(sqlhelper);
            s.addStudent();
            s.select();
            Console.ReadKey();

        }
    }

  public class Program
    {
        public static void Main(string[] args)
        {
            ISqlHelper sqlhelper = new DALMsSqlHelper();//修改为Mysql
            BLLAddStudent s = new BLLAddStudent(sqlhelper);
            s.addStudent();
            s.select();
            Console.ReadKey();

        }
    }

通过配置文件和反射 动态创建

<?xml version="1.0" encoding="UTF-8"?>
<Configs>
  <Config>
    <Name>ConsoleApplication1.DALMsSqlHelper</Name>
 </Config>
</Configs>
    XmlElement theUser = null, root = null;
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load("Config.xml");
            root = xmldoc.DocumentElement;
            theUser = (XmlElement)root.SelectSingleNode("/Configs/Config");
            string confi = theUser.GetElementsByTagName("Name").Item(0).InnerText;
            Assembly asm = Assembly.GetExecutingAssembly();

            ISqlHelper sqlhelper = (ISqlHelper)asm.CreateInstance(confi, true);//true:不区分大小写
            BLLAddStudent s = new BLLAddStudent(sqlhelper);
            s.addStudent();
            s.select();
            Console.ReadKey();
喜欢的朋友请帮忙点个赞!!!
原文地址:https://www.cnblogs.com/mchuang/p/5085841.html