在重构机房收费系统之前就一直听说这次重构要用反射+配置文件。深远的作用不知道,可是在这次重构用到,目的还是挺明白的:就是为了更换数据时方便,遵循开放-封闭原则。攻克了可维护和可扩展的问题。

以下就以机房收费系统登录为例来看看配置文件+反射的使用方法。

机房收费系统登录用到的数据库表是User_info表(用户表)。我利用的是三层思想。先看一下我的总体架构!

以下看看配置文件+反射+抽象工厂在登录时訪问数据库User表时的使用方法。

1.先进行配置文件操作

步骤:(1)在VS资源管理器的新建项目UI中。会有一个App.config文件。右击“打开”。

打开以后会出现例如以下结果。

(2)在配置文件里加入參数。

具体解释:在配置文件里写明是SQLServer还是Access,防止更改应用程序中的代码,利于扩展,避免改动。

(3)在要用到配置文件的项目中加入引用System.configuration(在这里我们Factroy项目中用到了配置文件):选中Factroy右击引用---打开引用界面。

(4)引用界面例如以下:

在左边“程序集”栏中找到“框架”从右边找到“System.configuration”这项勾选上。

这样配置文件基本就完毕!

接下来是代码阶段:

2.反射+配置文件+抽象工厂代码(訪问SQLServer中机房收费系统用户(User表))

'*************************************************
'文 件 名:SqlServerUserFactory
'命名空间:Factory
'内    容:读配置文件来给DB字符串赋值,在配置文件里写明是SQLServer还是Access。想要更换数据库直接改配置文件即可。

读配置文件来给DB字符串赋值。在配置文件里写明是SqlServer还是Access,想要更换数据库直接改配置文件即可。前提是:Sqlserver前缀的DAL层类里写的是訪问SQLServer数据库的代码。Access前缀的DAL层类里写的是訪问Access数据库的代码。 '功 能:用反射+配置文件+抽象工厂。方便更换数据库。

'文件关系: '作 者:宋笑 '小 组:XX '生成日期:2014/6/1 16:14:45 '版 本 号:V1.0.0.0 '改动日志: '版权说明: '************************************************* Imports System.Reflection '加入反射的引用 Imports System.Configuration '加入配置文件的引用 Imports IDAL Public Class SqlServerUserFactory '利用反射+配置文件+抽象工厂 Private Shared ReadOnly AssemblyName As String = "DAL" '定义程序集名称变量。D层命名空间的名字 Private Shared db As String = ConfigurationManager.AppSettings("DB") '表示读取配置文件。假设配置文件里是SQLServer数据库,就訪问SQLServer,假设是别的就訪问别的,不用更改程序中的代码。

'创建用户表的工厂 Public Function CreateUserInfo() As IUser Dim className As String = AssemblyName + "." + db + "UserDAL" 'DAL层中的SqlServerUserDAl的类名。

Dim iuser As IUser '实例化接口IUser iuser = CType(Assembly.Load(AssemblyName).CreateInstance(className), IUser) '把DAL层的SqlServerUserDAl类转换成IUser接口类型,通过调用接口类中的函数来调用D层中实现该接口函数。 Return iuser End Function End Class

具体解释: AssemblyName是程序集的名称。db +"UserDAL"是DAL层中的SqlServerUserDAL的类名。之所以配置文件里写Sqlserver ,是由于DAL层中类名是SqlServerUserDAL。假设不用SqlServer数据库。那么我在Factroy中再另建一个类,比方訪问Access数据库。那么类名就叫AccessUserDAL。

把配置文件里的

Value值改为Access。这样就是扩展而不是改动。DAL层中的类名是依据自己情况起的,不必一定前面加上Sqlserver或者Access。

仅仅要是一个标志。标识成这个类的代码是訪问的

QLServer数据库,这个类的代码是訪问的Access数据库的即可。配置文件依据情况更改即可。

最后总结:相信配置文件不止这一个作用。我们还须要研究。

。学习就是慢慢探索的过程。

重构机房收费系统总结1之配置文件+反射+抽象工厂相关推荐

  1. 重构机房收费系统(二)

    接上篇<机房收费系统重构(一)> 二.概要设计 完成了用例图,并用结合用例图完善了一下需求分析说明书,忘记是第几次修订需求分析说明书.有了用例图,很自然就进入了概要设计阶段.我认为这一阶段 ...

  2. 重构机房收费系统(一)

    从10月1号开始重构学校机房收费系统,没想到这次重构,推翻,再重构--用了两周时间. 这次整体架构采用三层,并融入了一些设计模式. 下面介绍这次重构的过程: 一.从UML用例图开始 对于机房收费系统的 ...

  3. 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...

    你能保证你的程序不会出问题吗? 不能 当你的程序执行到某个地方发生了你不想要的结果.你是否想让它一错再错? 不想 你是否想让你的程序占着茅坑不拉屎? 不想 你是否想知道你的程序出错的原因? 想 看了了 ...

  4. 重构机房VB.NET机房收费系统个人重构版你都学会了什么(之一)

    每日一贴,今天的内容关键字为重构机房 在VB.NET机房收费系统个人重构版时你都学会了什么?在开始第二遍的机房收费系统个人重构时,我发明不知不觉竟接触了很多很多之前不晓得的货色,也学到了很多新知识.下 ...

  5. 机房收费系统总结之5——抽象工厂+反射+配置文件

    起初,机房收费系统用纯三层在做,三层结构已把高内聚,低耦合的思想发挥的淋漓尽致.因为一直听说"抽象工厂",也开始尝试去应用,经过了一番尝试,也OK了.其中当然会用到反射和配置文件, ...

  6. 机房收费系统重构(五)—登陆窗口完整版

         在上上篇.<机房收费系统重构(3)>.中主要是介绍了自己关于DAL层,工厂层.以及接口层,还有实体层的理解.可是好多读者再问我.你的代码呢,我在这解释一下.就是我仅仅是写出关于那 ...

  7. vb.net机房收费系统重构——存储过程的使用

    在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一 ...

  8. 机房收费系统个人重构版:暮然回首,灯火阑珊

    [背景]   在蹒跚中自己的机房收费系统个人重构版已完结:回望这一路征程,感慨颇多:快乐过,痛苦过:紧张过,放松过!真可谓:酸甜苦辣,五味杂陈. [比一比] VB.Net版个人重构版比VB版机房收费系 ...

  9. 机房收费系统个人重构版:软工文档中那些图

    [前言]    图,提到这个字的时候脑海中就会出现许许多多的图像,它的重要性相信大家都明白,相比于文字来说它更生动形象正好符合人类大脑的记忆规律:很多人也知道动画片制作原理也是用一张张图片只不过转换的 ...

最新文章

  1. AndroidStudio开发jni不加载libs的so,只加载jniLibs的so
  2. 微软开放 AI 系统工具 Counterfit 源代码
  3. 人人都应该掌握的9种数据分析思维
  4. 干货:如何在前端统计用户访问来源?
  5. java需要知道的计算机底层
  6. php在什么方面使用使用队列,你知道在什么情况下使用队列吗?
  7. 华为服务器如何用pe重装系统,教你华为u盘重装win10系统详细图文
  8. 怎么取消苹果手机自动续费_手机腾讯视频的vip怎么取消自动续费?
  9. 如何在 SQL Server 2005 故障转移群集中添加或删除节点(安装程序)
  10. 金蝶K3 WISE 12.3版本系统部署指南
  11. vscode中出现 Statements must be separated by newlines or semicolons 问题的解决方法之一
  12. xcode 配置wechat_react-native-wechat微信组件的使用
  13. 古籍研究社系列第6部《迟来的翅膀》读后感……吗?
  14. C#Assembly详解
  15. 2022年考个中级会计有多难?多地财政局紧急官宣取消延考
  16. 分布式电商项目五:使用人人开源搭建前后分离的后台管理系统
  17. 【限时删除】一个惊艳的神器,可全网爬取各种资源......
  18. Vue3数组使用push,导致数组每一个元素都改变
  19. 确定股票交易日的算法
  20. C语言入门(21)——使用DBG对C语言进行调试

热门文章

  1. Maven 搭建spring boot多模块项目(附源码)
  2. Activiti Modeler发布以及教程
  3. memmove() -- 拷贝内存内容
  4. echo count(“abc”); 输出什么?
  5. (技能篇)双机热备之Oracle切换故障处理
  6. Java并发编程,3分分钟深入分析volatile的实现原理
  7. 【洛谷 P2303】 [SDOi2012]Longge的问题 (欧拉函数)
  8. Redis集群部署文档(Ubuntu15.10系统)
  9. 嵌入式实时系统程序开发一:按键程序编写
  10. lumia920 和htc 8x的对比评测