`
gatusso52
  • 浏览: 109633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

工厂模式系列 + 反射改进

阅读更多

1 简单工厂模式

一个工厂

一个抽象产品类

一组具体产品类

工厂根据参数决定返回那个具体产品

 

违反开闭原则

 

2 工厂方法模式

一个抽象工厂

一个抽象产品

一组具体工厂 和 与之对应的一组具体产品

每个工厂负责生产它的那种产品。

 

3 抽象工厂方法模式

一个抽象工厂

一组抽象产品

一组具体工厂 和 与之对应的一组具体产品

与工厂方法不同的是工厂生产的是一个系列的产品,而不是一种产品。


4

无论哪种方法,都还是需要有究竟是用哪个产品、或那个工厂的 逻辑判断

例如,在简单工厂中,需要有一维选择

case("c1"):
  return new C1();
case("c2")
  return new C2();


在工厂方法中,需要有一维选择

Factory factory = new FactoryAAA();
factory.creat();
 

在抽象工厂中,需要有二维选择

Factory factory = new FactoryAAA();
factory.creatTTT(); 
 

但是这一点可以通过反射来进一步解耦


例如简单工厂

return Class.forName("productClassName").newInstance();

 工厂方法(此时已经不需要若干的工厂子类,只需一个工厂控制器)

return Class.forName("FactoryClassName").newInstance().creat();

 抽象工厂方法(此时已经不需要若干的工厂子类,只需一个工厂控制器)

return Class.forName("FactoryClassName").newInstance().creatTTT();

 

而这些productClassName和factoryClassName,都可以以字符串形式、甚至配置文件形式读入


5

spring的context实际也就是一个大工厂(抽象工厂模式?)

而且spring定义bean的时候也可以指定factory对象(此时context是工厂的工厂?)

分享到:
评论

相关推荐

    用反射机制改进的抽象工厂

    用反射机制改进的抽象工厂

    菜鸟教程设计模式之工厂模式代码整理(反射机制改进版)

    这是设计模式的工厂模式的改善代码版本,用了反射机制,是用的菜鸟教程网站零散例子,在本地实际跑代码。自己给自己做个复习

    abstract-factory-demo.zip

    抽象工厂模式 (简单工厂+反射改进)

    模拟技术中的基于RTX与反射内存的实时支撑系统设计

    为达到提高仿真系统整体实时性的目的,采用了基于RTX+反射内存网的模式,改进了仿真系统的运行平台和数据传输模式,改进了仿真设备的接入方式,规划了改进模式后的仿真框架,搭建了该模式下的示例工程。该系统的仿真...

    Java反射机制 深入浅出

    1、到底什么叫反射 ...7、工厂设计模式的改进 Class类在一般的基本开发是不会有任何作用的,完全可以不会,但是,对于一些高端的开发框架,所有的基本的核心原理都在于反射机制的应用上。 8、代理模式

    基于RTX与反射内存的实时支撑系统设计

    为达到提高仿真系统整体实时性的目的,采用了基于RTX+反射内存网的模式,改进了仿真系统的运行平台和数据传输模式,改进了仿真设备的接入方式,规划了改进模式后的仿真框架,搭建了该模式下的示例工程。该系统的仿真...

    asp.net知识库

    泛型技巧系列:用泛型打造可复用的抽象工厂 体验.net2.0的优雅(四):Provider、策略、控制反转和依赖注入 泛型最佳实践 asp.net 2.0下嵌套masterpage页的可视化编辑 C# 2.0与泛型 动态调用对象的属性和方法——...

    VBC#.Net实体代码生成工具

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等...

    中波红外目标探测装置关键技术研究.caj

    (NITD)作为冷反射效应的定量评价标准,并结合非序列模式光线追迹的方法中国科学院大学博士学位论文:中波红外目标探测装置关键技术研究 II 完成了红外成像系统冷反射效应的定量评价;提出了一种具体的冷反射效应抑...

    实体代码生成工具(EntitysCodeGenerate)

    是一款专门为VB/C#.Net数据库程序员开发量身定做的(ORM框架)代码生成工具,所生成的代码基于面向对象、分层架构设计、ORM,使用改进的抽象工厂设计模式及反射机制等。

    log4Net详解(共2讲)

    2、抽象工厂+反射+配置文件实现数据库无缝切换 3、序列化/反序列化+泛型集合的应用 4、利用ASP.net HttpHandler实现防盗链 5、网站安全性方面:ASP.net防SQL注入及Web Service Soap头加密技术 6、ASP.net母板页 7、...

    ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG 4.3] 201105

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序员开发量身定做的(ORM框架)代码生成工具,所生成的代码基于面向对象、分层架构、ORM,使用改进的抽象工厂设计模式及反射机制...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)_4.3

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等...

    vb/c#.net实体代码生成工具(entityscodegenerate

    vb/c#.net实体代码生成工具(entityscodegenerate)【ecg】是一款专门为vb/c#.net数据库程序开发量身定做的(orm框架)代码生成工具,所生成的代码基于oo、ado.net、分层架构、orm,改进的抽象工厂设计模式及反射机制等...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)_4.3_及免安装文件

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等...

    ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG 4.2】 2010岁末最新版

    是一款专门为VB/C#.Net数据库程序员开发量身定做的(ORM框架)代码生成工具,所生成的代码基于面向对象、分层架构设计、ORM并参考微软Petshop中的经典思想,使用改进的抽象工厂设计模式及反射机制等。目前直接支持...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.7

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.4

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.6

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等...

Global site tag (gtag.js) - Google Analytics