【设计模式】反射+配置文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csxypr/article/details/75804603

        之前在学习设计模式的时候,对于抽象工厂中的反射+配置文件的使用一直都是一知半解的,但是在机房重构七层登录的运用以及报错,让自己对于反射

的使用有了更深刻的认识。

       反射就像是一个简单的记录+反射器,将配置文件中的内容反射到当前所要运用的内容中来。

       反射的运用格式:

    Assembly.Load(“程序集名称”).CreateInstance(“命名空间.类名称”)

       话不多说,先上代码:       

       配置文件:App.config 【在U层中】

      代码:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key ="ConStr" value ="server=.;database=CRRData;uid=sa;password=123456"/>
    <add key ="DB" value ="SQLserver"/>
  </appSettings>   
</configuration>


      反射:【Factory层】

      代码:

namespace Factory
{
    public class LoginFactory
    {
        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"]; //接收来自配置文件的数据
        public IDAL.LoginIDAL CreateUser()
        {
           //string ClassName = "DAL"+ "."+StrDB + "LoginDAL";   //DAL层的类名
           string ClassName = "DAL" + "." + "LoginDAL";
           return (IDAL.LoginIDAL)Assembly.Load("LoginDAL").CreateInstance(ClassName);    //反射+工厂的应用
        }
    }
}

        当然在使用反射前,要先引用System.Reflection的命名空间。

        在机房重构中,反射代码中的“程序集名称”为D层的程序集名称,D层为数据访问层。利用反射+配置文件就是想要实现数据访问程序。这时你输入的用户

名和密码就会进入到D层,查询数据内容。

        如果你想要更换数据库,该如何做呢?

        很简单,只要更改一下配置文件中的“SQLserver”内容,改为“Access”或者“Oracle”


        在反射中,StrDB为一个变量,所以只要在D层添加一个对应名称的类即可。

反射中的代码图示:


       对应的D层类名:


      学无止境,在不断地实践中成长。这篇博客还有不足之处,希望大家能够一一指出,不吝赐教。






猜你喜欢

转载自blog.csdn.net/csxypr/article/details/75804603