用反射技术替换工厂种的switch分支(14)
首先给大家拜个晚年,祝大家新春快乐,万事如意,鸡年大吉。
好了,前面我们讲了很多的工厂模式,其中,有个很明显的特点,工厂中,有一个方法,里面有很多的swich case 分支,我们前面说过,我们可以用反射的技术来避免swich case 分支。ok,那么,今天,我们来用反射+抽象工厂模式 来完善一下 抽象工厂模式
首先,给大家复习一下,什么是反射: Assembly.Load("程序集名称").CreateInstance("命名空间.类名"); 这是它的语法。需要using System.Reflection;
之前我们的写法是 IUser result = new SqlserverUser();
我们用反射就可以 IUser result=(IUser)Assembly.Load("程序集名称").CreateInstance("命名空间.类名"); 这是它的语法。需要using System.Reflection;
实际效果是一样的,但这两种写法有什么区别吗?
同样是实例化 SqlserverUser 类,这两种写法的区别就是,用反射写,SqlserverUser 类 是当作字符串变量出现在语句中的,这样,对于一个字符串来说,那就非常灵活了。这就相当于是一个写死在程序里,一个当作变量出现在程序里 一样,哪个更加灵活不言而喻了。
那这样,我们就可以将数据库操作封装成dll文件,然后通过配置文件,让程序灵活加载dll,这样,这个程序就活起来了。
灵活的运用反射+工厂类设计模式,就可以让整个程序更易于扩展。 一个好的设计,可以省却大量的时间,这样,程序员也就不用天天加班加点的改代码了。
关于更详细的 反射 技术, 配置文件 技术,园友们可以阅读一下其他大神的文章,在此不做详细讲解,有时间的话我会开辟新的专栏,专门讲解基础知识。
好了,今天先到此了,下一篇会讲 状态模式
本系列将持续更新,喜欢的小伙伴可以点一下关注和推荐,谢谢大家的支持。
用反射技术替换工厂种的switch分支(14)的更多相关文章
- C#反射技术概念作用和要点
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- C# 反射技术应用
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码
反射技术大量用于Java设计模式和框架技术,最常见的设计模式就是工厂模式(Factory)和单例模式(Singleton). 参考URL: http://blog.csdn.net/xiaohai79 ...
- [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程
[.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 本节导读:本节主要介绍什么是.NET反射特性,.NET反射能为我们做些什么,最后介绍几种常用的 ...
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
CASE函数 作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框 ...
- Java反射机制与工厂模式
工厂模式属于创建型模式,它提供了一种创建对象的最佳方式. 它的特点是:客户端的程序类不直接牵扯到对象的实例化管理,只与接口发生关联,通过工厂类获取指定接口的实例化对象. 简单工厂模式如下: inter ...
- Java中类加载和反射技术实例
我们知道一个对象在运行时有两种类型,一个是编译类型,一个是运行时类型.在程序运行时,往往是需要发现类和对象的真实的信息的.那么如何获的这种信息呢? 其一,如果我们在编译和运行时都知道类型的具体信息,这 ...
- 程序集与反射技术(C#)
首先我们来看程序集,程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件.exe和类库文件.dll).由于程序集在编译后并不一定会生成单个文件,而可能会生 ...
随机推荐
- Struts2---OGNL表达式和EL表达式
在action里放入actioncontext的变量值 ActionContext.getContext().put("forumList", forumList); 在jsp里如 ...
- 全球主流8位MCU芯片详细解剖No.2:英飞凌 XC866 - 全文
[导读] XC866是新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核.片内FLASH及功能强大的外设集.此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V ...
- 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能
源:如何使用XE2及更高版本中提供的自定义皮肤(样式)功能 1. 制作样式文件: 点击 XE2+ 的 IDE 菜单上的 Tools-->Bitmap Style Designer, 打开设计器. ...
- HDU 5652 India and China Origins
二分答案+验证,注意一开始就不连通的话输出0 #include<cstdio> #include<cstring> #include<cmath> #include ...
- 如何在微软Hyper-V下发挥SQL Server最大功效
要建设稳定运行的虚拟化SQL Server系统,关键是确保虚拟化管理软件配置能提供数据库所需的资源.SQL Server是CPU密集型技术,因此支撑它的虚拟机需要能获得充足的处理器资源,同时不能引起与 ...
- iOS 简易环形进度条
demo下载地址:https://github.com/haozheMa/LoopProgressDemo/tree/master ViewController中的代码 #import "V ...
- Docker 命令(二)
Docker 入门 启动docker systemctl start docker 帮助命令 docker --help docker [Commands] --help 例:docker run ...
- js局部变量,参数
作者:zccst 所有函数的参数都是按值传递的.也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样.基本类型值的传递如同基本类型变量的赋值一样.而引用类型值的传递,则 ...
- uses crt;
1.uses CRT,表示引用CRT.pas单元.CRT.pas单元是Pascal最重要的单元之一,主要用于字符界面的操作,里面内置了清屏.光标定位.删除行.调整字符亮度.前景色.背景色等功能函数.2 ...
- Mybatis3.2.1整合Spring3.1
Mybatis3.2.1整合Spring3.1 根 据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对 Mybatis ...