在IssueTracker项目中,用户可以选择使用Access数据库或者是SQL Server。通过Web.config文件中的
  <add key="DataAccessType" 
       value="ASPNET.StarterKit.IssueTracker.DataAccessLayer.SQLDataAccessLayer" />  进行配置。

如何实现这个功能,在此项目中使用了反射工厂模式。

反射通俗的说,就是在编译的时候,不知道将要生成的对象是什么。在运行时才根据配置内容,生成相应的对象。
在项目中实现方式如下:
首先定义了抽象类DataAccessLayerBaseClass 在Code/DAL/DataAccessLayer.cs中。在该类中定义对数据操作的所有抽象方法。AccessDataAccessLayer.cs和SQLDataAccessLayer.cs继承DataAccessLayerBaseClass,实现对Access和Sql数据库的数据操作。

在Code/DAL/DataAccessLayer.cs的
<?xml:namespace prefix = o />

 1public  class DataAccessLayerBaseClassHelper 
 2{
 3        public static DataAccessLayerBaseClass GetDataAccessLayer() 
 4           {
 5            Type trp = 
 6                Type.GetType(Globals.DataAccessType, true);
 7            // Throw an error if wrong base type
 8            if (trp.BaseType != 
 9                Type.GetType("ASPNET.StarterKit.IssueTracker.DataAccessLayer.DataAccessLayerBaseClass"))
10                throw new Exception( "Data Access Layer does not inherit DataAccessLayerBaseClass!");
11            DataAccessLayerBaseClass dc=  (DataAccessLayerBaseClass)Activator.CreateInstance (trp);
12            return (dc);
13        }
14}
15

Type trp = Type.GetType(Globals.DataAccessType, true); 这就实现了反射工厂的功能。在Globals.DataAccessType配置了是使用AccessDataAccessLayer还是SQLDataAccessLayer

从而使得方法返回正确的数据操作对象。

转载于:https://www.cnblogs.com/timothyzhong/archive/2005/11/12/275018.html

IssueTrackerCSVS 代码笔记-数据层的反射工厂模式相关推荐

  1. 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结

    工厂模式也用了不少,特别是MS的petshop中对数据库的访问,通过工厂模式可以达到自由切换SQL 和 Oracle 数据库.近来也在看设计模式的书,发现工厂模式还是有不少的扩展.结合书中的知识和我自 ...

  2. Android开发笔记(九十一)工厂模式

    基本概念 工厂模式是一种常用的实例化对象设计模式. 程序开发很多时候都在不停地敲if.else,因为业务需求总在发展变化,今天客户要求生产A产品,明天客户要求把A产品稍微改改变成B产品,当然A产品与B ...

  3. 设计模式学习笔记六:.NET反射工厂

    1. 简述 通过前面的学习,我们以传统的方式实现了简单工厂,工厂方法和抽象工厂,但是有些场合下如此处理,代码会变得冗余并且难以维护.假设我们要创建交通工具.可以是汽车,火车,轮船等,其结构如下: 我们 ...

  4. java 反射 工厂模式_Java反射机制demo(七)—反射机制与工厂模式

    Java反射机制demo(七)-反射机制与工厂模式 工厂模式 简介 工厂模式是最常用的实例化对象模式. 工厂模式的主要作用就是使用工厂方法代替new操作. 为什么要使用工厂模式?直接new不好吗? 直 ...

  5. php设计模式简单代码,PHP设计模式(1)工厂模式

    工厂模式 是一种类,它具有为您创建对象的某些方法.您可以使用工厂类创建对象,而不直接使用 new.这样,如果您想要更改是所创建的对象类型,只需更改该工厂即可.使用该工厂的所有代码会自动更改. 比方说我 ...

  6. 设计模式 学习笔记(1)简单工厂模式、策略模式

    1.简单工厂模式 用一个单独的类来做创造实例的过程. public class OperationFactory{ public static Operation createOperate(stri ...

  7. Java设计模式笔记(3)抽象工厂模式

    抽象工厂模式:为创建一组相关的或者相互依赖的对象提供一个接口,而且无需指定他们的具体类. 抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种.业务分类时,通过抽象工厂模式产生需要的对象是一种非常好 ...

  8. java工厂模式式代码_简单工厂模式及其简单Java案例代码实现

    说明:本文是<大话设计模式>的学习记录及结合网上相关信息编写,原书代码例子采用C#编写,本文采用Java稍加改写.若有不当,欢迎指正,共同进步.java 1.简单工厂模式概述:设计模式 简 ...

  9. Python工厂模式封装各类Webhook群聊机器人代码片段

    引言 企业存在给 特定群组 自动推送消息的需求,比如:监控报警推送.销售线索推送.运营内容推送等. 你可以在群聊中添加一个自定义机器人,通过服务端调用 webhook 地址,即可将外部系统的通知消息即 ...

最新文章

  1. iangularjs 模板_AngularJS中的模板安全与作用域绑定
  2. Sniffer pro 找不到网卡的解决方法
  3. linux vi快速删除文本内容
  4. 一对多查询,合并成一条数据
  5. c语言程序设计网课作业答案,《C语言程序设计》作业答案
  6. 虎扑签约神策数据,媒体 + 电商数据新玩法
  7. matlab 警告(warning)、错误(error)、异常(exception)与断言(assert)
  8. 通用数据接口USB3.0,雷电3,TypeC之间
  9. 全国草地资源类型分布数据/植被类型分布数据/土地利用类型分布数据
  10. 数据库系统概论第五版_第九章:关系查询处理和查询优化
  11. PaddleHub创意作品 -无价之姐之三十而已
  12. python循环中释放内存的方法_我怎样才能在Python中明确释放内存?
  13. image失败 安装scikit_安装scikit-image问题
  14. 旅行青蛙服务器维护时间,旅行青蛙多久出门一次?青蛙旅行出门时间一览
  15. C语言学习日记(四)
  16. 饿了吗html模板,饿了么.html
  17. vue里 a(){} 和a:()=>{}的区别
  18. 【性能测试】轻量级压测工具Hey
  19. TextAnalysisTool.net -- 提高文本分析效率的小工具
  20. 奥塔在线:Centos下使用RPM方式安装JDK1.8

热门文章

  1. 01-09 Linux三剑客-awk
  2. 计算机课实验报告收获体会,计算机实验报告总结.doc
  3. pythonturtle是标准库_Python标准库: turtle--海龟绘图。
  4. mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?
  5. doc es 中type_一文带你彻底弄懂ES中的doc_values和fielddata
  6. php上传文件类插件,JQueryfileupload插件实现文件上传功能_jquery
  7. centos7安装mysql5.7视频_Centos7安装MySQL5.7版本详细步骤
  8. 零基础小白前端学习之初始CSS
  9. 【前端规划】来看看我整理的这一份专属技术知识图谱吧~
  10. mysql的安全管理_MySQL安全管理