简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
在项目里使用struts1.x编写Action时都是继承某一个类(如Action),而使用Webwork或者struts2.0时是实现某个接口(如Action),这里采用接口而不使用继承的好处是显而易见的(易于扩张).那采用接口的方式是如何生成Action对象的呢?
这里就使用了工厂方法模式(本人并没有看过webwork,struts的源代码,纯粹是想象).
1.首先定义好接口
interface Action {
void execute();
}
2.编写实现改接口的Action(就是我们项目里要写的Action)
class UserAction implements Action {
public void execute() {
System.out.println("开始执行UserAction中的东西");
}
}
class RoleAction implements Action {
public void execute() {
System.out.println("开始执行RoleAction中的东西");
}
}
3.定义工厂(生成Action对象的地方)
class ActionFactory {
public static Action getAction(String name) {
Action action = null;
try {
action = (Action) Class.forName(name).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return action;
}
}
name字符窜就是我们配置文件中的class属性
4.测试代码
public class MethodFactory {
public static void main(String[] args) {
Action action = ActionFactory.getAction("org.abc.UserAction");
action.execute();
Action action1 = ActionFactory.getAction("org.abc.RoleAction");
action1.execute();
}
}
在webwork的配置文件中有method属性就是选择调用Action中的方法(默认是执行execute)
如果想实现该功能增加如下代码
class MethodCall {
public static void invoke(String methodName, String className, Object[] obj) {
Method[] method = ActionFactory.getAction(className).getClass()
.getMethods();
for (int i = 0; i < method.length; i++) {
try {
int a = method[i].toString().lastIndexOf(".");
String s = method[i].toString().substring(++a, method[i].toString().length()-2);
if (s.equals(methodName)) {
method[i].invoke(ActionFactory.getAction(className), obj);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
测试用例
public class MethodFactory {
public static void main(String[] args) {
MethodCall.invoke("execute", "org.abc.UserAction", null);
}
}
总结
使用条件:一个接口有一系列的实现
如上的Action接口可以有很多实现(UserAction、RoleAction等)
组成元素(以上面例子)
一个接口:Action
许多实现:UserAction、RoleAction
工厂类:ActionFactory
分享到:
相关推荐
简单工厂模式java示例demo,来自刘伟老师的《设计模式》一书
设计模式课程资料——简单工厂模式,使用Java实现,在eclipse进行编译
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
工厂模式有:简单工厂模式;工厂方法模式;抽象工厂模式。抽象的程度越来越强,给出了三种模式的java代码,想完全理解还要仔细研究。
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
一个简单的工厂模式(java)
这是代码,介绍请查看以下博客地址: http://www.cnblogs.com/homg/p/3548110.html代码乱码请使用utf-8编码。
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
简单工厂模式示例 有注释 需要的朋友可以下载研究 很简单很基础的一个设计模式
设计模式-简单工厂模式,java源代码; 便于新手进行设计模式的学习
JAVA简单工厂模式四则运算计算器
Java 简单工厂模式例子,Eclipse直接引入就可以使用
Java简单工厂模式和传统模式实现对比,通过简单实例比对两种方式差异,体现传统模式的弊端及工厂模式优势。利于初学者后续接触spring
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式
java 招聘(简单工厂模式) java 招聘(简单工厂模式)
JAVA简单工厂创立性模式介绍,包含简单工厂,工厂方法,抽象工厂。举例说明让您更好理解!
Java简单的工厂模式 介绍Java工厂模式的简单例子,注释写得不是很多,请耐心看。