介绍:简单工厂模式主要由3部分组成:工厂类、抽象类和实现抽象类的具体类
优点:客户端不再负责对象的创建,把这个责任丢给了具体的工厂类,客户端只负责对对象的调用,从而明确了各个类的职责.
缺点:使用了静态方法来创建对象,导致静态方法无法被继承.
例子:
package com.samplefactory;
public interface Animal {
/**动物都会吃的*/
public void eat();
}
package com.samplefactory;
public class Tiger implements Animal{
public void eat() {
System.out.println("老虎会吃.");
}
public void run(){
System.out.println("老虎会跑.");
}
}
package com.samplefactory;
public class Dolphin implements Animal {
public void eat() {
System.out.println("海豚会吃.");
}
public void swim(){
System.out.println("海豚会游泳.");
}
}
package com.samplefactory;
/**
*
* @Title: SampleFactory.java
* @Description: TODO(动物的简单工厂)
*/
public class SampleFactory {
public static Animal createAnimal(String name) {
if ("Tiger".equals(name)) {
return new Tiger();
} else if ("Dolphin".equals(name)) {
return new Dolphin();
}else{
return null;
}
}
}
package com.samplefactory;
/**
*
* @Title: Client.java
* @Description: TODO(客户类)
* @author awfhome@163.com
* @date 2010-6-2
* @version V1.0
*/
public class Client {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Animal animal = SampleFactory.createAnimal("Tiger");
animal.eat();
animal = SampleFactory.createAnimal("Dolphin");
animal.eat();
//利用反射
animal = SampleFactory2.createAnimal("com.samplefactory.Tiger");
animal.eat();
}
}
改进工厂类:
package com.samplefactory;
/**
*
* @Title: SampleFactory2.java
* @Description: TODO(利用反射来创建类)
* @author awfhome@163.com
* @date 2010-6-2
* @version V1.0
*/
public class SampleFactory2 {
public static Animal createAnimal(String name) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Class c = Class.forName(name);
Animal animal = (Animal)c.newInstance();
return animal;
}
}
UML:
- 大小: 5.7 KB
分享到:
相关推荐
总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...
在Java中,工厂模式有三种主要形式:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式:也称为静态工厂模式,它通过一个静态方法来创建对象。在这个模式中,工厂类负责决定实例化哪个产品类。这种模式...
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...
简单工厂模式的实质是由一个工厂类根据传入的参量,动态决定应该创建出哪一个产品类的实例。简单工厂模式实际上不属于23个GoF模式,但它可以作为GoF的工厂方法模式(Factory Method)的一个引导。 UML: ...
在Java中,简单工厂模式适用于对象的创建过程较为固定或不复杂的情况。它定义一个公共的工厂类,根据传入的参数或者条件来决定返回哪个具体类的实例。这种方式降低了代码的耦合度,使得在不修改客户端代码的情况下,...
在我们的“simplefactory.zip”文件中,我们可以看到一个简单的工厂模式实现示例。这个例子可能包括以下几个部分: - 一个接口,例如`Product`,定义了产品类的基本行为。 - 若干个实现`Product`接口的具体产品类,...
Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...
简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的工厂类来创建对象。这个工厂类通常包含一个或多个静态方法,用于根据输入参数创建不同类型的实例。这种模式的优点在于客户端代码无需...
简单工厂模式(Simple Factory Pattern)是工厂方法模式的一个简化版本,它没有定义工厂接口,只有一个具体工厂类负责创建所有对象。简单工厂模式适用于产品种类较少,且不会频繁改变的情况。 在实际应用中,工厂...
简单工厂模式(Simple Factory)** 简单工厂模式中,有一个中心工厂类负责创建对象。这个工厂类通常由一个静态方法构成,根据传入的参数来决定创建哪个具体的产品实例。这种模式适用于产品种类较少,且不会频繁扩展...
1. 简单工厂模式(Simple Factory):该模式是最简单的一种,使用一个工厂类来创建对象。 2. 工厂方法模式(Factory Method):该模式是对简单工厂模式的扩展,使用一个工厂类和一个抽象产品角色来创建对象。 3. ...
1. 简单工厂模式(Simple Factory Pattern) 简单工厂模式是工厂模式的最基础形式,通过一个公共的工厂类来创建对象。这个工厂类通常包含一个静态方法,可以根据传入的参数来决定创建哪个类的实例。这种模式适用于...
1. **简单工厂模式(Simple Factory)**:适用于需求较为简单的情况,主要负责创建一系列相关的对象。 2. **工厂方法模式(Factory Method)**:用于处理不同类型的对象创建过程,提供了一种接口来创建一系列相关或...
"SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...
1. 简单工厂模式(Simple Factory Pattern):也称为静态工厂方法模式,通过一个静态方法来创建对象,该静态方法根据传入的参数返回不同的实例。 2. 工厂方法模式(Factory Method Pattern):属于多态性设计模式,...
1. **简单工厂模式(Simple Factory Pattern)**:由一个静态方法来创建产品对象,它是最简单的工厂模式形式,但不利于扩展,因为静态方法不能被继承。 2. **工厂方法模式(Factory Method Pattern)**:定义一个...
总结来说,"001SimpleFactory.rar"压缩包中的代码示例可能是为了演示如何在实际项目中运用简单工厂模式,帮助开发者理解和学习如何通过工厂类来封装对象的创建过程,以实现代码的模块化和可扩展性。通过研究和实践这...
1. **简单工厂模式(Simple Factory Pattern)** 简单工厂模式是一种最基础的工厂模式,也被称为静态工厂方法模式。它通过一个静态方法来创建对象,这个静态方法就是工厂,根据传入的参数或者条件来决定创建哪个...
3. **工厂类**:负责创建具体产品,它是简单工厂模式的核心,例如`SimpleFactory`。 ### 工作流程 1. 客户端代码通过调用工厂类的静态方法来创建所需的产品对象。 2. 工厂类根据传入的参数或条件判断来决定创建哪个...
1. 简单工厂模式(Simple Factory) 简单工厂模式通常包含一个工厂类,该类负责根据输入条件创建特定的产品。在这个例子中,`FruitGardener` 类扮演了简单工厂的角色,它具有一个静态方法 `factory`,根据传入的...