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

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

下面就以机房收费系统登录为例来看看配置文件+反射的用法。机房收费系统登录用到的数据库表是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之配置文件+反射+抽象工厂,布布扣,bubuko.com

时间: 2024-10-29 10:46:17

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

重构机房收费系统之 模板方法模式

对于模板方法模式的使用,我懊悔自己用晚了,由于我们的机房收费收费系统有非常多窗口是差点儿一样的,假设我们不用模板方法模式,就会大大添加工作量,首先,我们须要反复的创建窗口,其次我们的代码量也会大大添加,就是复制.粘贴代码也是一件让人摒弃的事情,所以推出模板方法模式,用意就在降低代码反复,降低工作量,通过求同存异的思想来实现.以下看一下我在组合查询中用到的模板方法模式: 首先,创建父窗口,父窗口的创建就是普通的winform,我们知道组合查询这块儿一共同拥有四个窗口是大同小异的:学生上机状态查看.

重构机房收费系统前夕

VB版的机房收费系统完了之后,到c#,几乎没怎么写代码了,重新敲起那段回忆,还依稀能看到以前的影子,但是很多理论的知识感觉都已模模糊糊. 设计模式是面向对象编程的大牛们总结出的很多经典的面向对象程序设计的套路,面向过程就像是迷途的孩子,走的路越多,越难以找到顺着道找到回家的路,而面向对象就像是有了家的孩子,走到哪都能找到回家的路.呵呵,当然是有家的孩子好了. 学了UML之后,我们知道施工需要图纸,做一个项目,需要建模,学了设计模式之后我们知道程序的设计要考虑的不仅仅是写代码的时候方便,而更多的是

重构机房收费系统—浅谈三层

重构机房基本完成了,期间三层重构完了,推翻之后,再重构七层(外观和工厂),再重构,来来回回用了一个月........ 重构机房从画图画到一半就废弃了,因为对三层不熟,之后,做完了,才敢重新拾起来画.画图先从包图开始,宏观上有个了解: (一)重构机房包图: 先前画包图的时候,跟师傅交流,结果被一个师姐给笑话了,因为我认为:它们各个层之间都是双向箭头的,后来才知道,箭头表示调用关系,B层只能被U层或外观调用,B层不能调用U层,所以不存在双向箭头,大家注意. 在我这次重构中是严格按照上面的图中来的.

重构机房收费系统——数据库设计

曾记得,第一次编写机房收费系统的文档模板,整整有12个文档需要编写,仅仅花了两三天的时间就让师傅验收,完结项目,就这样囫囵吞枣的文档编写完成了. 要知道:欠下的账,终究是要还的.现在到了机房收费系统个人版重构阶段, (1)进行数据抽象,设计局部概念模型: (2)将局部概念模型综合成全局概念模型 (3)就可以按要求绘制机房收费系统数据库概念设计模型--ER关系图. 可以说,之前的数据库的概念设计给我奠定了一丢丢的设计基础,外加<数据库系统原理>中的三范式定理,本着求知好学.虚心请教的理念,于是乎

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

你能保证你的程序不会出问题吗? 不能 当你的程序执行到某个地方发生了你不想要的结果.你是否想让它一错再错? 不想 你是否想让你的程序占着茅坑不拉屎? 不想 你是否想知道你的程序出错的原因? 想 看了了这4个问题之后.假设你的回答和我的一致,那么请看下文 trycatch finally的使用方法: try '你想要写的程序 catch '捕获你想写的程序里面全部发生的异常 finally '不管发生还是不发生异常,你都想运行的代码 演示样例: Dim Update_Info As String 

vb.net机房收费系统重构——配置文件

机房收费系统已经进行了一段时间,敲完三层,然后又推翻了敲写七层.每天拿出的时间不多,所以导致项目进行了很长时间.在完成过程中,最开始敲出一条线比较困难,各种查资料,调代码,庆幸的是代码中的难点和错误终于在努力下攻克了. 机房收费系统中,最开始时看了其他人的介绍,说什么配置文件,反射和SqlHelper.其实刚开始对这些相当模糊,配置文件和反射在设计模式中接触过,但并没有深入的理解,而且当时是C#,因此一开始转移到vb.net中有些吃力,发射也是如此.经过不断的查阅资料和实践,现在对这些总算有些全

vb.net版机房收费系统重构

机房收费系统重构版终于正式开工了! 前几天,刚刚看完三层的视频,在视频中详细的讲解了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就很快就开始机房收费系统的重构了.可是谁想到,当我一打开编程软件,就让我"碰了一鼻子的灰"!首先是不知道vs 怎么用,其次就是看三层的时候,登录的实例使用C#写的,而这次我们需要用VB.NET写,所以对于其中的语法是知之甚少.虽然,前段时间我看了一遍台湾讲师--曹祖胜的<VB.NET 视频>,但是他讲的几乎都是一

vb.net版机房收费系统重构的成长历程(功能实现篇)

重构机房收费系统,功能是不变的,需求是不变的,系统背后的代码,架构发生了改变.做过vb6.0版的系统 后,利用VS的VB.NET平台, 通过调整程序架构,加入了设计模式,改善软件的质量.性能,提高软件的扩展性和维护性.相比旧版系统,新版系统主要亮点有: 亮点一:代码分层管理,清晰明了 亮点二:加入工厂和接口,代码复用较多,减少了重复或相似的代码. 亮点三:用到了存储过程.一方面减少了代码量,另一方面也相当于是一个事务的执行.比如注册或者结账需要同 时操作多张表,这几个表必须同时被操作成功后才可以

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

     在上上篇.<机房收费系统重构(3)>.中主要是介绍了自己关于DAL层,工厂层.以及接口层,还有实体层的理解.可是好多读者再问我.你的代码呢,我在这解释一下.就是我仅仅是写出关于那几部分的理解,并没有写贴出代码让大家研究的.可是不能顺应民心的文章不是好文章,所以我在这篇文章中,将机房收费登录中七层中全部的代码,贴出来供大家拍砖斧正.还有最后我在谈谈针对BLL层和外观层的理解.      首先我所说的七层是针对UI层,外观层,BLL层,DAL层,工厂层,实体层,接口层七层组成.