在七层中最重要的一个闪光点就是使用了“反射”技术,下面来说一下我自己的理解。
在说反射前,先说一下“键值对”。在机房收费系统的配置文件中有一段这样的代码:
<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啦!
想到这里,这是不得不佩服人类的智慧啊!