【设计模式】不就是换DB嘛(二)——升级版抽象工厂+反射+配置文件
2016-02-17 10:04
351 查看
【前言】
上一篇博客和大家分享了抽象工厂在实践管理系统时能为我们带来的好处,同时也给大家提了抽象模式更改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的时候只要在配置文件中更改一下字符串就可以了。不用重新编译程序了。增加功能也要比抽象工厂方便的多。
【总结】
设计模式不是一成不变的死板套路而是可以灵活变通组合的一些编程思想,学习设计模式最基础的是要把他们的基本代码适用情况记住, 但最高级的,却是要把他们都忘掉。 向着架构师的目标冲刺~~~相关文章推荐
- Android学习笔记之四大组件篇--->Activity
- Study
- 关于css的布局
- 《从零开始学Swift》学习笔记(Day67)——Cocoa Touch设计模式及应用之MVC模式
- Java中按值传递与按引用传递的区别
- spring三大核心学习(一)---控制反转
- freeswitch添加G729编解码模块
- AngularJS身份验证的方法
- Android intent 属性详解(二)
- MySQL 入门 之 数据类型表
- [置顶] 人格化的产品
- spring整合struts2时作用域scope解析
- [转]标题-链接
- 实例讲解Java的设计模式编程中责任链模式的运用
- SQLiteOpenHelper数据库工具包
- XXE攻防——XML外部实体注入
- 验证或上传AppStore不通过,Xcode attempted to locate or generate matching 提示缺少iOS分布身份签约***、不能修改system roots钥匙串
- 前端review,<!DOCTYPE html>
- Android中图片处理库Picasso的基本使用
- asp.net 中 AutoPostBack 和IsPostBack浅析