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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

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

     以下就重构机房登录为例来看看配置文件 反射的用法。机房收费系统登录用到的数据库表是 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(接口)




学习小结:

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


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
设计模式 Java
Java反射(Class、反射实例化、反射与单例、获取类结构)附带相关面试题
1.了解反射,2.Class类的三种实例化方法,3.反射机制与对象实例化,4.反射与单例设计模式,5.通过反射获取类结构的信息
314 0
|
7月前
|
Java
【反射】Java反射机制 -- 常用构造器与方法
【反射】Java反射机制 -- 常用构造器与方法
67 0
|
7月前
|
设计模式 Java
【SpringBoot】如何使用策略模式+抽象工厂+反射
【SpringBoot】如何使用策略模式+抽象工厂+反射
211 2
|
图形学
Unity构造器注入+配置文件小实例
Unity构造器注入+配置文件小实例
|
设计模式 缓存 Java
Java反射(反射与代理设计模式、反射与Annotation、自定义Annotation、反射整合工厂设计模式和代理设计模式)
1.反射与代理设计模式,2.反射与Annotation,3.自定义Annotation,4.Annotation整合工厂设计模式和代理设计模式
78 0
|
Java API
Java反射(通过反射获取构造函数、方法、属性)
1.通过反射获取构造函数,2.通过反射获取方法,3.通过反射调用成员属性
125 0
从工厂方法到注解的小例子
这里的前几个过程就不符代码了,请读者自行补充;只附上第四版,通过注解替换工厂方法实现自动化的小例子
|
设计模式 Oracle 关系型数据库
简单工厂+反射+配置文件
简单工厂+反射+配置文件
91 0
简单工厂+反射+配置文件
|
uml
工厂模式+配置文件+反射实现数据访问程序
工厂模式+配置文件+反射实现数据访问程序
100 0
工厂模式+配置文件+反射实现数据访问程序
|
Java
查看JDK动态代理生成的类的内容
首先我们先定义一个接口: public interface PersonInter { String test(String str); }接着就是我们想的要生成的JDK代理类源码的代码: public class JdkProxy...
1523 0