• 三层和接口


    首先向大家推荐个博客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();
    喜欢的朋友请帮忙点个赞!!!
  • 相关阅读:
    10-JS的函数学习
    Servlet(生命周期)
    09-js数组常用方法
    08-计算器案例
    07-js数组
    06-js的逻辑结构
    使用css设置三角形
    关于background-size 的一点小坑
    a 标签实现分享功能
    关于页面缩放时css错乱的处理方法---之一
  • 原文地址:https://www.cnblogs.com/mchuang/p/5085841.html
Copyright © 2020-2023  润新知