剖析七层

来源:互联网 发布:ubuntu tar 压缩 tgz 编辑:程序博客网 时间:2024/06/08 19:10

学完三层之后,紧接着就是七层,其实七层和三层在本质上是一样的,只不过七层比三层多了外观层,抽象工厂层还有接口层,当然还有一个SqlHelper.刚开始的时候,感觉自己对于SqlHelper类,不是很理解,当然同时让我困惑的还有配置文件和抽象工厂+反射,看见就感觉自己已经蒙圈了,更别说自己应用到七层中了。哎~,真的是应了那就话“出来混总是要还的”,所以,之前没有学好的知识点,现在不会用,还是得好好学一遍。

多余的话就不多说了,接下来到正题:

学习七层的时候,在网上搜的相关的博客,大部分博客先上来的就是包图,我理解的看懂包图,最重要的就是要理解包和包之间的连线的关系,我们再来回顾一下:

【四种关系】


【泛化】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。箭头指向:带三角箭头的实线,箭头指向父类。

【实现】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。箭头指向:带空心三角箭头的虚线,箭头指向接口。

【关联】:是一种拥有的关系,它使一个类知道另一个类的属性和方法。箭头指向:实线箭头。

【聚合】:表示整体对象拥有部分对象。箭头指向:空心菱形+实线箭头。

【组合】:聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期是一致的。箭头指向:实心菱形+实现箭头。

【依赖】:是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)。箭头指向:虚线箭头。

回顾完之后,我们就要看下七层的包图了


细心的会发现,数据访问层和接口层是虚线+空心三角,这是数据访问层去实现接口的特征和行为。

其他的全部是虚线+箭头,是依赖的关系。其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)。


【配置文件】

为配置文件?在说之前还是要感谢李鑫超同学的讲解。配置文件其实就是用来换换数据库的,举个栗子吧,加入你写好一个程序并且打包完让别人使用,那么,别人得连上他自己的数据库,所以说配置文件就是用来更换连接数据库的。通过改动配置文件里的数据库名称来更换数据库。

【抽象工厂+反射】

接触抽象工厂+反射的时候,感觉自己什么都不会,处于完全蒙的状态,后来看博客,查看各种资料,问其他同学感觉才稍微懂了一些,接下来小编就把自己理解的东西写出来

反射我是这样理解的:当你要实例化一个数据库的时候,不需要在程序里写明“如果是Sqlserver就去实例化SQL Server数据库相关类,如果是Access就去实例化Access相关类”,而是根据字符串DB的值去某个地方找应该实例化哪个类。

反射格式:

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

有了反射,当我们获取实例的时候可以有两种写法

1>常规的写法

IUser  result = new SqlserverUser();

2>反射的写法

using System.Reflection;  //先引用System.Reflection的命名空间IUser result=(IUser)Assembly.Load("当前程序集的名称").CreateInstance("当前命名空间的名称.要实例化的类名")

常规方法和反射方法的区别:

常规方法写明了要实例化SqlserverUser对象,但是不可以灵活更换为AccessUser对象。因为这都是事先编译好的代码

而反射的方法,CreateInstance("抽象工厂模式.SqlserverUser"),可以将SqlserverUser灵活的更换为AccessUser,因为这里是字符串可以当作变量来处理,也就可以根据需要更换。

【小结】

对于反射+抽象工厂,还有配置文件,这个名词我刚刚开始的时候就像丈二的和尚摸不着头脑,但是后来还是得学的,所以就不管三七二十一的各种查各种看,最后就稍微理解了,所以就有了这篇博客。

若有不对的地方,欢迎大家指出,不胜感激~~~


0 0