`
shjie5246
  • 浏览: 11247 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
最近访客 更多访客>>
社区版块
存档分类
最新评论

java模式学习之简单工厂模式

    博客分类:
  • java
阅读更多

简单工厂模式

简单工厂模式是类的创建模式,是由一个工厂类数据根据传入的参数决定创建出哪一种产品类的实例

 

 

 

简单工厂模式的结构

涉及到三个角色

1)工厂类角色:工厂类在客户端的直接调用下创建产品对象,由一个java类实现

2)抽象产品角色:拥有产品的共同接口,通常由一个java抽象类或接口实现

3)具体产品角色:工厂方法创建的任何对象都是这个角色的实例,通常由一个java类实现

/**
 * 工厂类角色
 */
public class Creator
{
	public static Product factory(String type)
	{
		Product product = null;
		if("product".equals(type))
		{
			product = new ConcreteProduct();
		}
		else if("product2".equals(type))
		{
			product = new ConcreteProduct2();
		}
		return product;
	}
}
/**
 * 具体产品角色
 */
public class ConcreteProduct implements Product
{
	public void operate()
	{
		System.out.println("具体产品角色");
	}

}
/**
 * 具体产品角色2
 */
public class ConcreteProduct2 implements Product
{
	public void operate()
	{
		System.out.println("具体产品角色2");
	}

}
/**
 * 抽象产品角色
 */
public interface Product
{
	void operate();
}

  

 

简单工厂模式在java中的应用

java.text.DateFormat

 

简单工厂模式的优缺点

优点:

2)模式的核心是工厂类,这个类含有必要的逻辑,可以决定在什么时候创建哪一个产品类的实例,以达到分工明确

1)客户端不再创建对象,而是把创建对象的职责交给了具体的工厂去创建

 缺点:

1)工厂的静态方法无法被继承

2)代码维护不易,对象要是很多的话,工厂是一个很庞大的类

3)这种模式对“开-闭”原则支持的不够,如果有新的产品加入到系统中就要修改工厂类

分享到:
评论

相关推荐

    java设计模式之工厂模式

    java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    在给定的资源中,"设计模式交流之工厂模式-shannonxu-2014-10-24.pptx"可能是详细的PPT讲解,涵盖了这些模式的概念、结构、优缺点以及实际应用案例。而"Factory"可能是一个代码示例,展示了工厂模式的具体实现,包括...

    java与模式之简单工厂模式

    在Java与模式之简单工厂模式中,我们首先理解其基本概念。简单工厂模式包含三个主要角色: 1. **产品接口(Product)**:定义了产品的公共接口,所有具体产品类都需要实现这个接口。 2. **具体产品(Concrete ...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    在Java中,简单工厂、工厂方法和抽象工厂是三种不同的工厂模式实现。 5. **简单工厂模式**:是最简单的工厂模式形式,它包含一个工厂类,根据传入的参数决定返回哪种类型的实例。虽然易于理解,但不易扩展,因为...

    java设计模式-简单工厂模式示例

    尽管如此,简单工厂模式对于一些简单且产品种类较少的场景仍然非常适用,尤其是在学习设计模式的初级阶段,它是一个很好的起点。通过深入理解这个模式,可以帮助开发者更好地理解和运用其他更复杂的设计模式,如工厂...

    Java设计模式-简单工厂

    通过厉风行老师的视频学习简单工厂模式,能够帮助理解这种模式的基本思想和实现方式,使得开发者能够更好地运用到实际项目中,提高代码的可读性和可维护性。在学习过程中,结合实际案例实践,有助于加深理解并灵活...

    java 简单工厂模式 源代码

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...

    JAVA简单工厂创立性模式介绍

    总结,简单工厂模式适合简单的对象创建,工厂方法模式则适用于需要根据不同条件创建不同对象的情况,而抽象工厂模式则更适用于需要创建一组相关对象的场景。理解并灵活运用这些模式,能有效提高代码的可维护性和可...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分

    本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...

    Java工厂模式:简单工厂、工厂方法模式、抽象工厂模式代码示例

    在Java中,工厂模式分为三种:简单工厂、工厂方法模式和抽象工厂模式。 **简单工厂模式** 是最基本的工厂模式,它由一个工厂类根据传入的参数决定创建哪一种产品类的实例。简单工厂容易实现,但违反开闭原则,即...

    Java简单工厂模式和传统模式实现对比

    Java简单工厂模式是一种设计模式,它是创建型模式的一种,用于将对象的创建过程封装到一个独立的工厂类中,使得客户端代码无需关心具体的对象创建细节,只需要知道如何调用工厂方法即可得到所需的对象。这种模式在...

    java工厂模式-简单工厂模式

    简单工厂模式并不是GoF设计模式之一,但它作为设计模式的基础,在实际项目中被广泛使用。简单工厂模式的主要目的是将对象的创建与对象的使用分离,使代码更加灵活,易于扩展和维护。本文将详细介绍简单工厂模式的...

    java简单工厂模式文档简单汇总

    【Java 简单工厂模式】简单工厂模式是一种创建型设计模式,它的主要思想是提供一个工厂类,根据传入的参数动态地返回一个产品对象。这种模式将对象的创建与对象的使用分离,使得代码更加简洁且易于维护。 在Java中...

    Java设计模式04简单工厂模式.pdf

    ### Java设计模式之简单工厂模式详解 #### 一、创建型模式概览 在软件工程领域,设计模式是一种被广泛采用的解决方案模板,用于解决在软件设计过程中遇到的常见问题。其中,创建型模式(Creational Pattern)专注...

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

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

    Java 工厂模式 抽象工厂 工厂方法模式

    - `factory2`、`factory3`、`factory1` 这些文件名可能是实现工厂模式的Java源代码,分别代表了不同级别的工厂类,如简单工厂、工厂方法和抽象工厂的实现。通过查看这些源代码,可以学习到如何在实际项目中应用这些...

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

    在这个"java设计模式之简单工厂.zip"压缩包中,包含了两个视频文件,分别以“5.理解简单工厂.avi”和“4.初识和体会简单工厂.avi”命名,它们旨在帮助我们深入理解和掌握Java中的简单工厂设计模式。 简单工厂模式是...

    Java 简单工厂模式例子

    **Java 简单工厂模式详解** 简单工厂模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个方法来实例化所需的类,而无需关心具体类的实现细节。这种模式在Java编程中广泛应用,特别是在...

    java命令行计算器_简单工厂模式

    Java命令行计算器是一个基于简单工厂模式实现的编程项目,它提供了基本的四则运算功能,包括加、减、乘、除。简单工厂模式是设计模式中的结构型模式,它的主要目的是将对象的创建过程封装起来,使代码更易于维护和...

Global site tag (gtag.js) - Google Analytics