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

2024-08-26 20:32

本文主要是介绍机房重构之配置文件、反射和抽象工厂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

     以下就重构机房登录为例来看看配置文件 反射的用法。机房收费系统登录用到的数据库表是 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 IDALPublic Class SqlServerFactory'利用反射+配置文件+抽象工厂Private Shared ReadOnly AssemblyName As String = "DAL"      '定义程序集名称变量,D层命名空间的名字Private Shared db As String = ConfigurationManager.AppSettings("DB") '表示读取配置文件,如果配置文件中是Sqlserver,就访问SQLServer数据库,如果是别的就访问别的,不用更改程序中的代码。'创建用户表的工厂Public Function CreateUserInfo() As IUserDim className As String = AssemblyName + "." + db + "UserDAL"          ' AssemblyName是程序集的名称,db + "UserDAL"是DAL层中的SqlServerUserDAL的类名。之所以配置文件中写Sqlserver ,是因为DAL层中类名是SqlServerUserDAL。如果不用SqlServer数据库,那么我在Factroy中再另建一个类,比如访问Access数据库,那么类名就叫AccessUserDAL。把配置文件中的Value值改为Access。这样就是扩展而不是修改。Dim iuser As IUser   '实例化接口IUseriuser = CType(Assembly.Load(AssemblyName).CreateInstance(className), IUser)
’将实例化的D层类通过向上转型转换成接口类,然后通过调用接口类中的函数来调用D层中实现该接口的函数。Return iuserEnd FunctionEnd Class</span>

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

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

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

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




学习小结:

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


这篇关于机房重构之配置文件、反射和抽象工厂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109603

相关文章

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

spring6+JDK17实现SSM起步配置文件

《spring6+JDK17实现SSM起步配置文件》本文介绍了使用Spring6和JDK17配置SSM(Spring+SpringMVC+MyBatis)框架,文中通过示例代码介绍的非常详细,对大家的... 目录1.配置POM文件2.在resource目录下新建beans.XML文件,用于配置spirng3

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

【反射知识点详解】

Java中的反射(Reflection)是一个非常强大的机制,它允许程序在运行时检查或修改类的行为。这种能力主要通过java.lang.reflect包中的类和接口来实现。 通过反射,Java程序可以动态地创建对象、调用方法、访问字段,以及获取类的各种信息(如构造器、方法、字段等)。 反射的用途 反射主要用于以下几种情况: 动态创建对象:通过类的Class对象动态地创建其实例。访问类的字段