工厂模式 + 反射改进
来源:互联网 发布:淘宝代理加盟 编辑:程序博客网 时间:2024/06/07 18:03
1 简单工厂模式
一个工厂
一个抽象产品类
一组具体产品类
工厂根据参数决定返回那个具体产品
违反开闭原则
2 工厂方法模式
一个抽象工厂
一个抽象产品
一组具体工厂 和 与之对应的一组具体产品
每个工厂负责生产它的那种产品。
3 抽象工厂方法模式
一个抽象工厂
一组抽象产品
一组具体工厂 和 与之对应的一组具体产品
与工厂方法不同的是工厂生产的是一个系列的产品,而不是一种产品。
4
无论哪种方法,都还是需要有究竟是用哪个产品、或那个工厂的 逻辑判断
例如,在简单工厂中,需要有一维选择
- case("c1"):
- return new C1();
- case("c2")
- return new C2();
case("c1"): return new C1();case("c2") return new C2();
在工厂方法中,需要有一维选择
- Factory factory = new FactoryAAA();
- factory.creat();
Factory factory = new FactoryAAA();factory.creat();
在抽象工厂中,需要有二维选择
- Factory factory = new FactoryAAA();
- factory.creatTTT();
Factory factory = new FactoryAAA();factory.creatTTT();
但是这一点可以通过反射来进一步解耦
例如简单工厂
- return Class.forName("productClassName").newInstance();
return Class.forName("productClassName").newInstance();
工厂方法(此时已经不需要若干的工厂子类,只需一个工厂控制器)
- return Class.forName("FactoryClassName").newInstance().creat();
return Class.forName("FactoryClassName").newInstance().creat();
抽象工厂方法(此时已经不需要若干的工厂子类,只需一个工厂控制器)
- return Class.forName("FactoryClassName").newInstance().creatTTT();
return Class.forName("FactoryClassName").newInstance().creatTTT();
而这些productClassName和factoryClassName,都可以以字符串形式、甚至配置文件形式读入
5
spring的context实际也就是一个大工厂(抽象工厂模式?)
而且spring定义bean的时候也可以指定factory对象(此时context是工厂的工厂?)
- 工厂模式 + 反射改进
- 简单工厂模式+反射来改进抽象工厂模式
- 设计模式之用反射机制改进的抽象工厂
- 结合Java反射用简单工厂模式改进抽象工厂模式
- 使用Java反射跟简单工厂模式改进抽象工厂模式
- 工厂设计模式的改进 通过反射中Class类下的newInstance()对象
- 简单工厂模式的改进
- 反射工厂模式
- 工厂模式与反射
- 抽象工厂模式+反射
- 反射工厂模式
- 工厂模式中的反射
- 简单工厂模式+反射
- 反射--工厂设计模式
- 持续改进,抽象工厂也反射
- C#--使用反射改进简单工厂
- Java--用简单工厂来改进抽象工厂(反射)
- 利用反射实现工厂模式.
- linux man手册各章节的意义与用法
- linux 守护进程
- 一个男人关心的东西决定了他的层次
- linux 信号
- C 语言FTP
- 工厂模式 + 反射改进
- linux动态链接库
- linux exec函数族
- Grandpa is Famous (P2092)
- 移动平台的产品设计世界
- linux父子进程
- 修改磁盘图标
- 虚函数
- 学习的“法宝”之剖析自己的“学习”