`
实学实战
  • 浏览: 15648 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

简单工厂设计模式

 
阅读更多

1.模式定义

简单工厂模式(SimpleFactory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类

2.模式结构

简单工厂模式包含如下角色:
Factory:工厂角色。
Product:抽象产品角色。

ConcreteProduct:具体产品角色。


现在来看看这个例子:


1.Person 接口

package simple.factory.com;


//Person 接口
public interface Person {
	public void howWho();
}


2.Chinese类

package simple.factory.com;


//实体类    实现  Person 接口
public class Chinese implements Person {

	@Override
	public void howWho() {
		// TODO Auto-generated method stub
		System.out.println("我是中国人");
	}

}


3.American类

package simple.factory.com;


//实体类    实现  Person 接口
public class American implements Person {

	@Override
	public void howWho() {
		// TODO Auto-generated method stub
		System.out.println("我是美国人");
	}

}


4.工厂类

package simple.factory.com;


//简单的小工厂设计模式
public class WriterPactory {
	public static void show(Person p){
		p.howWho();
	}
}

5.测试类

package simple.factory.com;

/*
 * 简单的工厂模式:
 * 就是用户只需要吃苹果,而不是种苹果再吃【麻烦】。
 * 用户只需要告诉工厂你的需要:
*/
public class TestTwo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p1,p2,p3,p4;
		p1= new Chinese();
		p2= new American();


		WriterPactory.show(p1);
		WriterPactory.show(p2);
	}

}



6. 模式分析

将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。

在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何Java源代码。

简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。

简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。


7.模式优缺点

7.1简单工厂模式的优点:

工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。

客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。

通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。

7.2简单工厂模式的缺点

由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。

使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。

系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

8.模式适用环境

在以下情况下可以使用简单工厂模式:

工厂类负责创建的对象比较少:由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。

客户端只知道传入工厂类的参数,对于如何创建对象不关心:客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数。




看看这篇
反射机制和工厂设计模式的使用http://blog.csdn.net/javawebrookie/article/details/49686587

java反射机制模式http://blog.csdn.net/JavaWebRookie/article/details/49705297


分享到:
评论

相关推荐

    ios 简单工厂设计模式

    简单工厂设计模式是其中一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这个接口就像一个工厂,根据输入条件生产不同类型的实例。 简单工厂模式的核心在于一个“工厂”类,这个类...

    简单工厂设计模式小例子

    简单工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这个模式中,一个工厂类负责创建对象,而客户端代码不再需要知道具体创建的对象类型,只需要知道它是从工厂来的。这种模式的主要优点是...

    简单工厂设计模式实现的计算器

    简单工厂设计模式是一种常用的设计模式,它在软件工程中用于创建对象,特别是在需要根据特定条件创建不同类的对象时。在这个实现的计算器项目中,我们利用了简单工厂模式,结合了面向对象编程的三大特性——继承、...

    C#计算器 简单工厂设计模式

    简单工厂设计模式是一种常用的设计模式,它在C#编程中被广泛应用,特别是在创建对象时需要根据条件选择不同类型的实例时。在这个"计算器"项目中,我们可能会看到如何使用这种模式来构建不同类型的计算器,比如基本的...

    简单工厂设计模式源码

    简单工厂设计模式是一种在软件设计中广泛使用的创建型设计模式,它的主要目的是为了提供一个统一的接口,用于创建一组相关的或相互依赖的对象,而无需指定它们的具体类。在这个模式中,一个专门的工厂类负责根据输入...

    面向对象技术-简单工厂设计模式

    简单工厂设计模式是这些模式中的一种基础模式,常用于创建对象时,特别是当系统需要根据某些条件动态决定创建哪种类型的实例时。 简单工厂模式的核心思想是通过一个公共的工厂类来负责对象的创建,而不是让客户端...

    简单工厂设计模式1

    简单工厂设计模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。这种模式使代码能够绕过复杂的实例化逻辑,转而使用一个简单的工厂方法来创建对象。在本示例"简单工厂设计模式1...

    operation 简易四则运算器 java项目 简单工厂设计模式

    在本Java项目中,"operation 简易四则运算器"是一个基于简单工厂设计模式实现的计算工具,旨在帮助用户进行基本的加减乘除运算。该项目充分体现了面向对象编程的思想,通过封装、继承和多态性来提高代码的可读性和可...

    C#工厂设计模式简单实例

    C#工厂设计模式简单实例——计算器 public class Factory { //创建一个静态方法 public static Operation CreateOper(int a, int b, string oper) { //创建一个Operation对象 Operation op = null; switch ...

    简单工厂设计模式2

    简单工厂设计模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式使代码可以根据输入参数的不同来创建不同的对象,而无需暴露具体的创建逻辑。在“简单工厂2”这个程序...

    C#源代码-简单工厂设计模式练习.zip

    简单工厂设计模式是设计模式的一种,它提供了一种创建对象的最佳方式,尤其适用于那些对象创建过程较为简单的场景。在这个"C#源代码-简单工厂设计模式练习"中,我们可以深入理解如何在C#中实现这个模式。 简单工厂...

    java简单工厂设计模式.docx

    Java中的简单工厂设计模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式将实例化的责任集中在一个类中,即工厂类,而不是分散到各个客户端代码中。以下是对这个模式的...

    java工厂设计模式之简单工厂

    **Java工厂设计模式之简单工厂** 简单工厂设计模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个静态方法获取所需的具体产品,而无需了解这些产品的具体实现。这种模式的主要目的是将...

    C#源代码-简单工厂设计模式之计算器练习.zip

    简单工厂设计模式是创建型设计模式的一种,用于将对象的创建过程封装起来,使得客户端代码无需关心具体对象的创建细节,只需通过一个公共接口来获取所需对象。在这个"C#源代码-简单工厂设计模式之计算器练习"中,...

    工厂设计模式代码

    工厂设计模式是软件工程中广泛使用的一种创建型设计模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码不直接创建对象,而是通过一个专门的工厂类来负责对象的实例化。这种模式使得系统在面对产品扩展时...

    工厂设计模式简单实例

    在这个名为"工厂设计模式简单实例"的资料中,我们可以期待看到一个基础的工厂模式实现。 工厂模式的核心思想是定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,客户端在使用时无须知道...

Global site tag (gtag.js) - Google Analytics