【设计模式】不就是换DB嘛(二)——升级版抽象工厂+反射+配置文件


【前言】

      上一篇博客和大家分享了抽象工厂在实践管理系统时能为我们带来的好处,同时也给大家提了抽象模式更改DB的几个问题,那么增加功能时有什么方法不需要更改添加那么多类呢? 换数据库的时候可不可以不更改程序呢? 下面分享下简单工厂+抽象工厂+反射+配置文件下的“换DB”。

【正文】

demo类图】

 

 

demo代码实践】

using System;
using System.Reflection;
using System.Configuration ; //引用configruaiton 让程序可以读取配置文件
namespace System {
	public class DataAccess {

		private static readonly string DB = ConfigurationManager.AppSettings["DB"]; //static 设置成静态全局变量,在其它层中也可使用 
            //readonly 使它无法在方法中被更改, 只能在反射文件中更改

        private static readonly string AssemblyName = "System"; //用两个string变量拼出实体类的名字
		public DataAccess()
        {

		}

		~DataAccess(){

		}

		public virtual void Dispose(){

		}

		public IDepartment CreateDepartment()
        {
            string ClassName = AssemblyName + "." + DB + "Department";


			return (IDepartment )Assembly.Load (AssemblyName ).CreateInstance (ClassName );

		}

		public IUser CreateUser(){
            string ClassName = AssemblyName + "." + DB + "User";


			return (IUser )Assembly .Load (AssemblyName).CreateInstance (ClassName );   //这里程序集生成的dll文件必须在bin文件夹下
		}

	
	}//end DataAccess

}//end namespace System

配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <appSettings>
        <add key ="DB" value ="Sqlserver"/>
    </appSettings>
</configuration>
其他的代码和上一篇没有变化。。
【优点】
    通过配置文件的使用,再换DB的时候只要在配置文件中更改一下字符串就可以了。不用重新编译程序了。增加功能也要比抽象工厂方便的多。

【总结】

       设计模式不是一成不变的死板套路而是可以灵活变通组合的一些编程思想,学习设计模式最基础的是要把他们的基本代码适用情况记住, 但最高级的,却是要把他们都忘掉。 向着架构师的目标冲刺~~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农胖虎-java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值