抽象工厂+反射+配置文件

1.配置文件如下:

2.首先需要在命名空间里引用:

Imports System.Configuration  ‘引用配置文件

Imports System.Reflection         ’引用反射


3.工厂中代码如下:(有关参数类型已标出,注意字符串类型

程序集:程序的物理分组,.NET的程序集中封装了类型元数据信息命名规则类型名要有点分隔,这样体现了层次结构命名,将类型按相关功能的逻辑类别进行分组,是新建一个项目是起的名字

命名空间:对类型的逻辑分组。可理解为dll,每个项目都有一个dll文件,这个dll中包含这个项目中所有用到的方法程序,包括项目之间的引用调用,也是通过封装的dll实现,有解决不同类库下类名相同的情况的作用

一个程序集可以包含多个命名空间,而一个命名空间也可以跨多个程序集

4.如果是用配置文件打开数据库,其实代码一样,也是读配置文件里的key:


5.下面对题目中的3个名词解释一下:

          抽象工厂:提供一个创建一个或一系列相关或相互依赖对象的接口,而无需指定它们的类,,由上述代码可看出                           返回类型是一个接口,即创建了一个接口

      配置文件:

             1)作用:不修改客户端代码的前提下,可以增加或替换子类。相当于抽象方法类似,把一个类或几个类抽象                    出一个方法,使用时只需调用抽象的这一个方法即可。

             2)核心:通过Key值找value值

      反射:     

             1)原理:程序运行时已知名称的类或已有对象的相关信息,由于.NET的程序集中封装了类型元数据信息,因此可先通过Assembly.Load("程序集名")方法加载一个程序集,再通过CreateInstance("命名空间.类名")方法根据类名创建一个Object类型的对象,用户可根据需要再转换成所需类。机房重构中就是创建了D层的指定类,然后通过强制转换,转换成接口类。因为D层实现接口层(没有具体实现方法的方法体),D层与IDAL层方法名相同,D约等于IDAL所以当调试时,会显示返回的对象是D层.类,但变量定义的是接口。总结一句话: 用反射创建的对象(D层类对象)替换父类(IDAL类)的对象的引用,运行时调用子类(D层类)的方法实现(IDAL类)具体的功能

             2)理解:相当于有一个黑盒子,如果我想用黑盒子里的东西,只需拿过来用即可,无需知道盒子里的东西是怎样配置的,这样就解除了switch或if分支判断带来的耦合了。


6.为什么要用配置文件+反射那???

        注意到反射和配置文件中参数类型为字符串类型,字符串是可以更改的,而该字符串类型的变量又是配置文件的Key值,而配置文件就是通过Key值去找对应的value值,然后把value值赋值给变量,然后再用到反射中,即成功反射到D层了,如果我写了一个功能更好的D层,想把原来的D层替换掉,只需更改配置文件的Key值相对应的value值即可,这样符合了开放——封闭原则。

       同样如果把数据库抽象出来,如果我想换数据库,需改动配置文件里有关连接数据库的value值,但由于语言的不同,还需把数据库代码替换成符合该语言的语法


评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值