`

设计模式——简单工厂

 
阅读更多

 

 

1 初识简单工厂:
 定义:提供一个创建对象实例,而不关心具体实现的功能;
 结构:



 
 参考实现:

public class Client {
	
	public  static final int A = 1;
	public  static final int B = 1;
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Factory factory = new Factory();
		ProductSample productSample = factory.makeProduct(A);
		productSample.function();

	}

}

/**
 * 创建产品的地方
 * @author zm
 *
 */
public class Factory {
	

	ProductSample productSample;
	
	public ProductSample makeProduct(int i){
		
		if(i == 1) {
			productSample = new ProductA();
		}
		
		if(i == 2) {
			productSample = new ProductB();
		}
		
		return productSample;
	}
}

public interface ProductSample {

	public void function(); // 产品具备的功能
}


public class ProductA implements ProductSample {

	@Override
	public void function() {
		System.out.println("this is productA, i can dance for you");
	}

}


public class ProductB implements ProductSample {

	@Override
	public void function() {
		System.out.println("this is productB, i can sing for you");
	}

}

  

 


2 体会简单工厂:
 不用模式的解决方案:面向接口编程,具体实现类可以有多种,根据配置参数决定具体使用哪个实现类
 使用模式的解决方案:直接 new 具体实现类; 这样不灵活,以后替换别的实现方案时,需要修改具体代码

 

3 理解简单工厂:
 3.1) 典型疑问:上述案例,创建实例仅仅是从客户端类client移动到factory类,就这么简单吗?

        回答: 理解简单工厂所处的位置,

     客户端仅仅根据需求文档,  发送需要产品参数给工厂即可,其余事情交给工厂,

     客户端真正实现和具体实现的隔离


 3.2)认识简单工厂:功能就是用于创建接口,抽象类,普通类的实例

 

 3.3)简单工厂的变种:
      a) 静态工厂:就是将工厂类构造函数私有化,创建方法static化

 

 

 3.4)简单工厂创建范围: 控制在一个独立的组件级别或模块级别

 3.5) 时序图:

 

 

 

      

 3.6) 可配置的简单工厂: 使用配置文件+反射方式

 eg:

public class Factory {
	/**
	 * 具体的创造Api的方法,根据配置文件的参数来创建接口
	 * @return 创造好的Api对象
	 */
	public static Api createApi(){
		//直接读取配置文件来获取需要创建实例的类
		
		//至于如何读取Properties还有如何反射这里就不解释了
		Properties p = new Properties(); 
		InputStream in = null;
		try {
			// 从配置文件中决定 是new出具体的哪个接口实现类
			in = Factory.class.getResourceAsStream("FactoryTest.properties");
			p.load(in);
		} catch (IOException e) {
			System.out.println("装载工厂配置文件出错了,具体的堆栈信息如下:");
			e.printStackTrace();
		}finally{
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		//用反射去创建具体产品实现类;  
		Api api = null;
		try {
			api = (Api)Class.forName(p.getProperty("ImplClass")).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return api;
	}
}


FactoryTest.properties:
ImplClass=cn.javass.dp.simplefactory.example5.Impl

 

 


 3.7)优缺点:

    a) 帮助封装

    b) 可能增加客户端使用复杂度(eg: 根据参数不同 常见不同具体实现类)
 

 

 


4 思考简单工厂:
 本质:是选择,而不是实现,实现类是已经都写好的,仅需要做出要选择哪种实现写法
 何时选用:

    a) 完全封装隔离的具体实现,外部只能通过接口来操作封装体---> 客户端通过工厂获取对应的接口,具体实现交给工厂调用具体实现类

   b)  将对外创建对象的职责集中管理和控制

 

 5 简单工厂脑图:

 



 

 

  • 大小: 74.4 KB
  • 大小: 50.4 KB
  • 大小: 15.6 KB
分享到:
评论

相关推荐

    设计模式——简单工厂模式

    **设计模式——简单工厂模式** 简单工厂模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个专门的类(称为工厂类)负责创建对象,客户端无需知道所创建的对象的具体类,只需要...

    设计模式——简单工厂 VS 工厂方法

    简单工厂模式,也称为静态工厂模式,是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露实例化逻辑。在简单工厂模式中,一个单一的工厂类负责生产所有相关类型的实例。这种模式适用于产品种类较少且...

    实验二 简单工厂模式.zip_31QS_C#_设计模式——简单工厂模式_设计模式实验

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了客户端代码与具体产品类之间的耦合度。在本实验中,我们将深入理解和应用C#语言实现简单工厂模式。 简单工厂模式的...

    设计模式——抽象工厂模式

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体类。这种模式的主要目的是为了隔离产品对象的创建和使用,使得系统对产品类的依赖降低到最低,同时也方便了产品的扩展和...

    设计模式——工厂模式在开发中的应用(简单计算器)

    这个是http://blog.csdn.net/dawanganban/article/details/9884681博客中java设计模式的源代码。下载前请先看《设计模式——工厂模式在开发中的应用》一文。

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    在软件设计模式中,工厂模式是一种非常常见的创建型模式,它提供了一种创建对象的最佳方式。C#中的工厂模式分为简单工厂、抽象工厂和单例模式三种,每一种都有其特定的应用场景和优势。 1. **简单工厂模式**: ...

    c#工厂模式——简单工厂_抽象工厂实例

    ### C#工厂模式详解——简单工厂与抽象工厂实例解析 #### 一、工厂模式概述 工厂模式是一种常用的设计模式,在面向对象编程中被广泛应用于创建对象。它通过提供一个统一的接口来创建一系列相关的或相互依赖的对象...

    设计模式C#描述之——简单工厂模式

    ### 设计模式C#描述之——简单工厂模式 #### 知识点概述 简单工厂模式是一种常用的设计模式,属于创建型模式之一。该模式的主要目的是为了封装产品对象的创建过程,将这一过程从客户端分离出来,使客户端无须关心...

    设计模式(简单工厂和工厂方法C++版)Demo程序

    本Demo程序主要涵盖了两种常用的创建型设计模式——简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)。这两种模式都是用来创建对象,但它们在灵活性和抽象程度上有所不同。 简单工厂模式是一种静态...

    设计模式——刘伟

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...

    Java设计模式-简单工厂

    **Java设计模式——简单工厂** 简单工厂模式是软件设计模式中的一种基础模式,它属于创建型设计模式。在Java编程中,我们常常会遇到需要创建一系列相关或相互依赖的对象,而这些对象的创建过程可能会非常复杂。这时...

    设计模式-简单工厂模式-例题

    ### 设计模式——简单工厂模式解析与应用实例 #### 一、简单工厂模式概述 简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,...

    Java设计模式——工厂设计模式详解

    Java设计模式——工厂设计模式详解 在软件设计中,工厂设计模式是一种常用的设计模式,主要用于实例化有共同接口的类。Java设计模式——工厂设计模式是Java中的一种常用的设计模式,主要用于实例化有共同接口的类。...

    C#面向对象设计模式1:简单工厂

    本文将深入探讨C#编程语言中的一个基础设计模式——简单工厂模式。 简单工厂模式是一种创建型设计模式,它的主要目的是提供一个工厂类来负责创建特定类型的对象,而无需让客户端代码知道具体创建过程。在C#中,我们...

    设计模式——约会版

    在《设计模式——约会版》这一独特视角下探讨的设计模式,并非我们传统意义上的面向对象设计模式(如工厂模式、单例模式等),而是通过模拟约会场景,将抽象的设计原则与实际生活中的互动策略相结合,以此来形象地...

    Java设计模式简单工厂模式

    **Java设计模式——简单工厂模式** 简单工厂模式是软件设计模式中的创建型模式之一,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个专门的类(工厂类)负责创建其他类的实例,客户端通过工厂类来获取所需...

    三种工厂设计模式和两种单例模式

    在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...

    实验七 设计模式——创建型模式.docx

    ### 实验七 设计模式——创建型模式 #### 一、实验目的 1. **掌握设计模式:** 通过本实验,学生将深入了解三大类型的23种设计模式,并掌握每种模式的基本工作原理及其适用场景。 2. **应用场景设计:** 学生能够...

    Python设计模式之简单工厂模式实例详解

    本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下: 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类...设计模式——简单工厂模式 简单工厂模式(Simple Factory Pattern):是通

Global site tag (gtag.js) - Google Analytics