三层和接口

首先向大家推荐个博客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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值