抽象工厂之“反射”技术

本文探讨了在七层架构中的抽象工厂模式如何利用“反射”技术,通过键值对实现灵活的数据库切换。以机房收费系统为例,详细解释了在登录功能中,如何通过Assembly加载指定路径找到D层并激活具体实例,如“DAL:LoginDAL”,以实现对不同数据库的支持。这种利用反射的方法大大提高了项目的可维护性和灵活性。
摘要由CSDN通过智能技术生成

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

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

<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啦!

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


评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值