机房重构之配置文件、反射和抽象工厂

简介:

    本次机房重构过程中用到了反射 配置文件,目的还是挺明确的:就是为了更换数据时方便,遵循开放 封闭原则,解决了可维护和可扩展的问题。

     以下就重构机房登录为例来看看配置文件 反射的用法。机房收费系统登录用到的数据库表是 User_info 表(用户表)。


 下面看看配置文件 反射 抽象工厂在登录时访问数据库 User 表时的用法:

     1. 先进行配置文件操作

    步骤:( )在 VS 资源管理器的项目 UI 中,打开App.config 文件。



      )在配置文件中添加参数


     分析:在配置文件中写明是 SQLServer 还是 Access ,防止更改应用程序中的代码,利于扩展,避免修改。

     )在要用到配置文件的项目中添加引用 System .configuration (在机房重构中Factroy 项目用到了配置文件):在 Factroy 中选择添加引用


 )引用界面如下:


 在左边“程序集”栏中找到“框架”从右边找到“ System .configuration ”这项勾选上。这样配置文件基本就完成!

 2. 反射 配置文件 抽象工厂代码(访问 SQLServer 中重构机房的用户( User 表))

  (1)添加代码

<span style="font-size:18px;">'*************************************************
 
Imports System.Reflection   '添加反射的引用
Imports System.Configuration   '添加配置文件的引用
Imports IDAL
 
Public Class SqlServerFactory
  '利用反射+配置文件+抽象工厂
  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"          ' AssemblyName是程序集的名称,db + "UserDAL"是DAL层中的SqlServerUserDAL的类名。之所以配置文件中写Sqlserver ,是因为DAL层中类名是SqlServerUserDAL。如果不用SqlServer数据库,那么我在Factroy中再另建一个类,比如访问Access数据库,那么类名就叫AccessUserDAL。把配置文件中的Value值改为Access。这样就是扩展而不是修改。
    Dim iuser As IUser   '实例化接口IUser
 
    iuser = CType(Assembly.Load(AssemblyName).CreateInstance(className), IUser)
’将实例化的D层类通过向上转型转换成接口类,然后通过调用接口类中的函数来调用D层中实现该接口的函数。
    Return iuser
  End Function
 
End Class</span>

    分析: DAL  层中的类名是根据自己情况起的,不必一定前面加上   Sqlserver  或者   Access  。只要是一个标志,标识成这个类的代码是访问的  S QLServer  数据库,这个类的代码是访问的   Access  数据库的就行。配置文件根据情况更改就行。

(2)为什么要用抽象工厂

以备我们的软件要在不同数据库上运行,现在我们使用的是SQL Sever,而要使用Access或者Oracle等时就需要考虑了,抽象工厂可以使我们灵活地更换到其他数据库上。如何能够灵活结合UML图进行理解:

图中的蓝色框是IDAL(接口)




学习小结:

由于重构机房的这部分的应用,有一点时间了,感觉自己总是总结不好,就一直没有写,而现在感觉回过头来,再写一写总结感觉还是很不错的,至少又有了很多的感触。这部分虽然当时感觉蛮难搞定的的,花了不少的时间来处理,现在还是很好理解的,努力去实践吧!


目录
相关文章
|
存储 算法 分布式数据库
持币生息DAPP系统开发|模式方案|源码
区块链将所有信息存储在分类账系统中。此外,任何类型的数据交换都称为“交易”
|
小程序 数据可视化 前端开发
编写小程序用什么软件
编写小程序用什么软件
1041 5
|
Cloud Native 测试技术 云计算
云原生技术在现代应用开发中的角色与实践
【9月更文挑战第31天】本文深入探讨了云原生技术如何革新现代应用开发流程,通过实际案例分析,揭示了其对提高开发效率、确保系统可扩展性和可靠性的显著影响。文章不仅介绍了云原生的核心概念,还提供了实施策略和最佳实践,旨在为开发者提供一条清晰的云原生转型之路。
|
安全 数据安全/隐私保护 开发者
国家数据局副局长沈竹林一行莅临瓴羊调研
国家数据局副局长沈竹林一行莅临瓴羊调研
258 0
|
弹性计算 Ubuntu Linux
幻兽帕鲁服务器多少钱?2024年阿里云幻兽帕鲁服务器报价及帕鲁服务器搭建教程
幻兽帕鲁服务器多少钱?2024年阿里云幻兽帕鲁服务器报价及帕鲁服务器搭建教程。
416 0
|
前端开发 JavaScript 开发者
前端祖传三件套HTML的常用属性之class
HTML是前端开发的基础知识之一,而class属性是其中一个常用的属性。在HTML中,class属性可以帮助我们快速地为元素设置样式或者在JavaScript中通过类名找到元素并进行操作。本文将介绍class属性的定义、用法以及注意事项,帮助广大前端开发者更好地掌握class属性。
650 0
|
编解码 索引 视频直播
第一个将Palette Mode引入VVC(H.266),阿里云在JVET会议上引起关注
本文作者阿里云视频云高级技术专家睿柯如是说:阿里云在屏幕视频编码技术和应用上有世界领先的团队。6月中国AVS会议中,阿里云提出提案分析屏幕视频编码的应用需求,引起AVS组织关注,采纳阿里云的提案成为下一代AVS3的需求。
5213 0
第一个将Palette Mode引入VVC(H.266),阿里云在JVET会议上引起关注
|
SQL 存储 安全
阿里巴巴Java开发手册快速学习
善医者“未有形而除之”,提高工程健壮性最好的方式是在代码出现问题之前就排除掉,不给Bug出现的机会。一份好的开发规范就可以起到这样的作用,大大减少产品上线后的问题。《阿里巴巴Java开发手册》是阿里巴巴的内部编码规范,阿里官方的Java代码规范标准,这份开发手册不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好好阅读。
27900 0
|
网络协议 应用服务中间件 nginx