简单工厂模式又叫又叫做静态工厂方法(StaticFactory Method)模式,说直白点就是调用一个类的静态方法,这个静态方法根据不同的情况创造不同的对象给客户端,而这个类就为工厂类.说的可能有点绕,其实就是一个类根据你传递给他的判断参数进行对象实例的创建,而创建的过程一般都进行向上转型为.具体见下面示例.
如果觉得这说的没意思,可以直接看下面红色扯淡部分,通俗易懂。
最顶层的抽象类:
package com.SimpleFactory;
public abstract class AbstractClass {
}
继承上述抽象类的子类1:
package com.SimpleFactory;
public class AbstractClass1 extends AbstractClass {
@Override
public String toString() {
System.out.println("AbstractClass1");
return "AbstractClass1";
}
}
子类2:
package com.SimpleFactory;
public class AbstractClass2 extends AbstractClass {
@Override
public String toString() {
System.out.println("AbstractClass1");
return "AbstractClass1";
}
}
制造对象的工厂:
package com.SimpleFactory;
public class CreateFactory {
public static AbstractClass getInstance(String arg) {
// 如果传入的参数为“1”则创建AbstractClass1对象给客户端
if (arg != null && "1".equals(arg)) {
return new AbstractClass1();
// 如果传入的参数为“2”则创建AbstractClass2给客户端
} else if(arg != null && "2".equals(arg)) {
return new AbstractClass2();
} else {
return null;
}
}
}
如果有新的情况,即有新的子类需要被创建时,需要在工厂类中添加相应的判断分支(这个是简单工厂模式的一个缺点),上述分支是用if else书写的,可以用其它方式进行判断。
简单工厂模式其实是个创造型模式,是负责制造的,上面的例子过于简单,只是为了说明情况。
说的再通俗一点,比如有一个学生的抽象类,有学生类张三继承了学生抽象类,张三踢足球,有学生类李四类继承了学生抽象类,李四类打篮球,有具体类王五,王五会打台球,王五类也继承了学生抽象类,当有一天,学校跟外校搞场友谊赛,每场需要派不同的学生上场,这时候学校就要根据不同的情况创建学生对象去参加某种比赛,如当为篮球比赛的时候就需要创建李四,当为台球时候就派王五,同理如果是足球比赛就派张三,这就是一个简单工厂模式,一个创造型模式,假设学校是学生的制造工厂 如下
public class School {
public static 学生 getInstance(球类){
if(篮球){
renturn 创建de李四
}else if (足球){
return 创建de张三
} else if (台球) {
return 创建de王五
} else {
return 创建神(神继承了学生。。。)
}
}}
上面所有提到的抽象类的地方都可以用接口代替,这要看具体的业务需求要看是否有些共性的东西可以向上转移到超类中去实现
简单工厂模式的UML类图
类图说明如下 Product_A、Product_B实现了IProduct接口当Create创建的时候创建的是超类行,但实际超类行赋值操作赋的是具体的子类对象。
- 大小: 22.7 KB
分享到:
相关推荐
在这篇文章中,我们将深入探讨两种常见的设计模式:Facade(外观)模式和Simple Factory(简单工厂)模式。 首先,让我们关注Facade模式。外观模式是一种结构型设计模式,它的主要目标是提供一个统一的接口,用来...
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...
Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...
本篇文章将详细探讨"设计模式之Factory",它是一种非常基础且重要的创建型设计模式。 Factory模式的核心思想是提供一个接口或者抽象类,用于创建某一类对象,但允许其子类决定实例化哪一个类。这种模式使得创建过程...
简单工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个工厂类负责创建所有相关的对象,而客户端只需要知道具体的产品类型,无需了解如何创建这些对象的细节。这种...
本Demo程序主要涵盖了两种常用的创建型设计模式——简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)。这两种模式都是用来创建对象,但它们在灵活性和抽象程度上有所不同。 简单工厂模式是一种静态...
"t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...
总的来说,Java工厂模式SimpleFactory是一种实用的设计模式,能够帮助我们更好地管理对象的创建过程,提高代码的可维护性和可扩展性。通过将对象的创建过程封装在工厂类中,我们可以在不修改客户端代码的情况下,...
例如,在`simpleFactory`这个压缩包中,可能包含了一个简单的工厂模式实现的示例代码。这个`SimpleFactory`类就是工厂,它通常包含一个或多个静态方法,这些方法根据输入参数的不同返回不同类型的对象。这些对象可能...
这三种工厂模式的共同之处在于它们都为对象的创建提供了抽象层,隐藏了具体的实例化过程。然而,它们之间的区别在于灵活性和抽象程度: - 工厂方法模式提供了一种定义抽象接口的方法,让子类来决定具体实例化哪个类...
**设计模式之简单工厂模式** 简单工厂模式是软件设计模式中的结构型模式之一,它提供了一种创建对象的最佳方式。在简单工厂模式中,我们定义一个用于创建对象的接口,但让子类决定实例化哪一个类。简单工厂模式使...
1. **简单工厂模式(Simple Factory)**:这是最基础的工厂模式,它包含一个静态方法,根据传入的参数返回相应的对象实例。这种模式的优点在于客户端代码无需知道如何创建对象,只需知道对象的类型即可。但它的缺点...
1. **简单工厂模式(Simple Factory)**:适用于需求较为简单的情况,主要负责创建一系列相关的对象。 2. **工厂方法模式(Factory Method)**:用于处理不同类型的对象创建过程,提供了一种接口来创建一系列相关或...
**Java工厂设计模式之简单工厂** 简单工厂设计模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个静态方法获取所需的具体产品,而无需了解这些产品的具体实现。这种模式的主要目的是将...
简单工厂模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是在系统中如何创建对象的问题。设计模式是软件开发中的经验总结,旨在提高代码的可重用性、可读性和可维护性。 在简单工厂模式中,一个工厂...
简单工厂模式是面向对象设计中的一种经典设计模式,它属于创建型模式,主要用来解决对象的创建问题。在Java编程中,简单工厂模式通过一个中心工厂类来负责创建相关的对象,而无需让客户端代码直接new具体的产品类。...
- 在`SimpleFactory`文件中,我们可以看到一个简单的工厂类,它根据输入类型创建相应的对象。这种模式适用于对象种类较少且不常变动的情况。 2. **普通工厂模式**(工厂方法模式): - 工厂方法模式将对象的创建...
简单工厂模式(Simple Factory Pattern)是设计模式中较为基础的一种模式,属于创建型模式。它通过提供一个统一的接口来创建一系列相关的或相互依赖的对象,而无需指定具体类。 #### 核心概念与特点 简单工厂模式的...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型设计模式。在Java编程中,我们常常会遇到需要创建一系列相关或相互依赖的对象,而这些对象的创建过程可能会非常复杂。这时,简单工厂模式就提供了一种封装...
在这个"java设计模式之简单工厂.zip"压缩包中,包含了两个视频文件,分别以“5.理解简单工厂.avi”和“4.初识和体会简单工厂.avi”命名,它们旨在帮助我们深入理解和掌握Java中的简单工厂设计模式。 简单工厂模式是...