简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类
在项目里使用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中,我们将深入探讨简单工厂模式的核心概念、结构以及如何在实际编程中应用。 简单工厂模式的基本思想是定义一个工厂类,它可以根据传入的参数或者条件来决定创建哪种类型的实例。这种模式通常...
工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...
在这个设计模式课程资料中,我们将使用Java语言来阐述和实现简单工厂模式,并在Eclipse集成开发环境中进行编译。 简单工厂模式的核心思想是提供一个工厂类,这个工厂类负责创建一系列相关的对象,而不是让客户端...
在Java编程语言中,工厂模式通常分为简单工厂模式、工厂方法模式和抽象工厂模式三种类型。这些模式都是围绕着一个中心思想:将对象的实例化过程封装起来,使代码更加灵活且易于维护。 1. **简单工厂模式**: 简单...
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...
简单工厂模式是最简单的工厂模式形式,它通过一个静态方法来创建对象。在这个模式中,工厂类负责知道应该创建哪个具体类的对象。例如,在Java中,你可以定义一个名为`SimpleFactory`的类,它有一个静态方法如`...
工厂模式通常分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。下面我们将详细探讨这三种工厂模式在Java中的实现。 **1. 简单工厂模式** 简单工厂模式是最早期的工厂模式形式,它通过一个静态工厂方法来创建...
在Java中,简单工厂模式、工厂方法模式和抽象工厂模式是三种常见的实现方式。简单工厂模式虽然简单易懂,但扩展性较差,因为它将所有产品类型硬编码在工厂类中。工厂方法模式通过定义创建对象的接口,让子类决定实例...
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
这里我们主要探讨基于Java的例子,即简单工厂模式。 简单工厂模式的核心思想是定义一个工厂类,这个类负责创建对象,而客户端代码不再直接创建对象,而是调用工厂类的静态方法来获取所需对象。这样做可以隔离类的...
在Java编程中,简单工厂模式通过一个中心工厂类来负责创建相关的对象,而无需让客户端代码直接new具体的产品类。这种方式提高了代码的可读性和可维护性,降低了系统的耦合度。 首先,我们来看一下简单工厂模式的...
本篇将深入探讨工厂模式在Java中的实现以及类设计图的应用。 首先,我们来看简单工厂模式。它是一种静态工厂,通常包含一个静态方法,用于根据输入参数返回所需类型的实例。简单工厂模式的优点在于易于使用,但缺点...
在Java中,工厂模式主要分为三种形态:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式(Simple Factory)**: 简单工厂模式通过一个静态方法来创建对象,这个静态方法根据输入参数来决定实例化...
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...
Java简单工厂模式是一种设计模式,它是创建型模式的一种,用于将对象的创建过程封装到一个独立的工厂类中,使得客户端代码无需关心具体的对象创建细节,只需要知道如何调用工厂方法即可得到所需的对象。这种模式在...
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 **1. 简单工厂模式(Simple Factory)** 简单工厂模式中,有一个中心工厂类负责创建对象。这个工厂类通常由一个静态方法构成,根据传入的...
在这个"关于简单工厂模式的一个java例子"中,我们将深入探讨这种模式的基本概念、实现方式以及它在Java编程中的应用。 简单工厂模式的核心思想是将对象的创建过程封装在一个单独的工厂类中,客户只需要知道产品类型...
Java工厂模式是面向对象设计模式中的一个重要概念,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时不直接实例化具体类,而是通过一个接口或者抽象类来间接创建。这种模式的核心在于将对象的创建过程...
在这个"一个简单的工厂模式(java)"示例中,我们将深入探讨如何在Java中实现这个模式。 首先,我们来看`HumanFactory.java`,这是工厂模式的核心,它定义了产品(在这个例子中是人)的创建逻辑。工厂类通常包含一个...
**Java 简单工厂模式详解** 简单工厂模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个方法来实例化所需的类,而无需关心具体类的实现细节。这种模式在Java编程中广泛应用,特别是在...