抽象工厂之“反射”技术

来源:互联网 发布:登陆淘宝网店 编辑:程序博客网 时间:2024/05/03 12:45

在七层中最重要的一个闪光点就是使用了“反射”技术,下面来说一下我自己的理解。

在说反射前,先说一下“键值对”。在机房收费系统的配置文件中有一段这样的代码:

<appSettings>      <add key="ConnStr"  value="server=.;database=my_db;User ID=sa;password=123456" />      <add key="DBString"  value="DAL" />        </appSettings>

这里面的每一个“key”都对应着一个相应的值“value”,key与value做到一一对应。这样根据key,就可以得到与其对应的值了。

在反射工厂中以登录功能为例,看它是如何运用的:

string StrDB = System.Configuration.ConfigurationManager.AppSettings["DBString"];        //登录        public InterfaceDAL.InterfaceLogin CreateFact()        {                        return (InterfaceDAL.InterfaceLogin)Assembly.Load(StrDB).CreateInstance("DAL.LoginDAL");//反射+工厂的实现        }
看第一行代码:通过加载“DBString”,字符串StrDB就可以得到“DBString”对应的值:“DAL”,而“DAL”就是我D层中类库的名称。

登录功能中Assembly加载的路径是“StrDB”,就可以找到D层了,然后激活具体的实例:“DAL:LoginDAL”,(这里是我D层下具体的类名),就可以找到具体的D层下面的各个类文件了。

当然使用反射的主要目的就是方便更换数据库,在现实项目中,如果需要更换数据库,那么只要把第一个键值对中的数据库该换掉就OK啦!

想到这里,这是不得不佩服人类的智慧啊!


1 0