工厂模式,顾名思义就是一个工厂要能根据不同原料来生产不同的产品,我们把工厂中的生产线叫产品生产者,很明显工厂有很多的生产线,工厂会根据提供的原料,选择那条产线来生产出对应的产品。
1.首先所有的生产线都有一个公用方法那就是生产动作,我们写接口
/**
* Created with IntelliJ IDEA.
* User: hank
* Date: 2016/5/26
* Time: 11:22
* 生产类接口 ”生产出各种类型的产品“
* To change this template use File | Settings | File Templates.
*/
public interface Productor {
/**
* 生产方法
*/
public void product();
}
* Created with IntelliJ IDEA.
* User: hank
* Date: 2016/5/26
* Time: 11:22
* 生产类接口 ”生产出各种类型的产品“
* To change this template use File | Settings | File Templates.
*/
public interface Productor {
/**
* 生产方法
*/
public void product();
}
2.实现生产接口,因为我们要生产不同的产品
/** * Created with IntelliJ IDEA. * User: hank * Date: 2016/5/26 * Time: 11:25 * 生产TV 的生产者 * To change this template use File | Settings | File Templates. */ public class TVProductor implements Productor { @Override public void product() { System.out.println("TVProductor.product===>生产TV"); } }
/** * Created with IntelliJ IDEA. * User: hank * Date: 2016/5/26 * Time: 11:25 * 生产PC的生产者 * To change this template use File | Settings | File Templates. */ public class PCProductor implements Productor { @Override public void product() { System.out.println("PCProduct.product===>生产PC");
} }
3.写工厂类:
/** * Created with IntelliJ IDEA. * User: ${xiangdong.he} * Date: 2016/5/26 * Time: 11:27 * 工厂会根据提供的原料“strType”,自助选择那条产线来生产,来生产出对应的产品 */ public class ProductorFactory { public Productor getProductor(String strType){ if("TV".equals(strType)){ return new TVProductor(); }else if("PC".equals(strType)){ return new PCProductor(); }else{ System.out.println("对不起!我们工厂不能生产这种产品!~"); return null; } } }
这样我们就会有“工厂了”,根据我们自己的实力,依来源材料来做各种不同的产品。
再比如我们的客户不知道我们自己能生产什么,突然送过来原材料让我们生产我们无法生产的产品那就只能说System.out.println("对不起!我们工厂不能生产这种产品!~");
那我们优化下给我们的工厂打广告告知大众能生产什么.
改写工厂类的方法:
public PCProductor getPcProductor(){ return new PCProductor(); } public TVProductor getTvProductor(){ return new TVProductor(); }
这样我们就告诉客户我们只生产这两种类型的产品。
test:
public class MyTest { public static void main(String[] args) { //1. //实例化工厂 ProductorFactory pf = new ProductorFactory(); //获得工厂具体的生产者 Productor p = pf.getProductor("TV"); //生产者生产 p.product(); //2. //获得工厂具体的生产者 PCProductor pcpd = pf.getPcProductor(); pcpd.product(); } }
显然第二种我们不会犯加工不得错误。
这样如果我们有钱了在添加一条生产DV的生产线,只要在在写一个实现方法,再在工厂类中加入。
这样我们要改动工厂类。
还有一种抽象工厂模式模式,让我们不用修改的太多。
就是将工厂抽象出一个接口,由具体的工厂类实现,生产者还是之前的实现原理,相当于我们将之前的生产线升级成一个工厂一条产线。这样我们在增加生产其他产品的时候就会在建立一个工厂,对应的在建立一条产线,不会再修改任何东西。
相关推荐
Java常用设计模式-工厂模式 工厂模式(Factory Pattern)是一种常用的设计模式,它通过一个工厂类来实现对象的创建,而无需直接暴露对象的创建逻辑给客户端。这种模式可以使客户端代码与具体的产品类解耦,提高代码...
C#设计模式-工厂模式系列
总之,工厂模式是一种基础且实用的设计模式,它在软件开发中扮演着重要角色,帮助我们构建更加健壮、易维护的系统。通过理解并应用工厂模式,开发者可以更好地管理和控制对象的创建过程,提升代码的可读性和可扩展性...
java常用设计模式-工厂模式的实现.doc
Java设计模式中的工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个工厂对象来完成创建工作。这种模式的核心在于封装了对象...
工厂模式是设计模式中的一种创建型模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码无需关心具体对象的创建细节,只需通过一个统一的接口来获取所需的对象。 在Java编程语言中,工厂模式通常分为简单...
该资源详细介绍了工厂模式
《C#设计模式——工厂模式详解》 工厂模式是一种常用的设计模式,它的主要目的是通过抽象出产品创建过程,使得客户端代码不再直接new对象,而是通过工厂来获取对象,从而降低了代码之间的耦合度,提高了系统的可...
### 设计模式之工厂模式详解 #### 一、概述 工厂模式是一种常用的设计模式,属于创建型模式之一。它的核心思想在于将对象的创建过程封装起来,并通过特定的工厂类来实现对象的创建,以此达到降低系统耦合度的目的...
### C#设计模式——工厂模式详解 #### 一、引言 在软件开发过程中,对象的创建是一个常见的任务。然而,随着需求的变化,这些对象的具体实现可能会经历较大的改动。为了解决这一问题,并确保系统的其他部分不受这些...
工厂模式作为最常用的设计模式之一,是创建型模式的代表,它的主要目标是提供一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,用户在使用时无需知道具体创建的对象是什么类型,只需通过工厂...
在标题“c++设计模式-工厂方法模式”中,我们关注的是如何在C++中实现工厂方法这一设计模式。工厂方法模式的核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以使类的实例化过程...
本资源主要关注的是“工厂模式”,这是Java开发中一个非常重要的设计模式。工厂模式属于创建型设计模式,它提供了一种创建对象的最佳方式,尤其是在我们需要延迟对象创建或者隔离对象创建与使用时。 首先,我们来...
工厂模式是软件设计模式中的核心模式之一,它在软件开发中扮演着重要的角色,特别是在需要创建一系列相关或相互依赖的对象时。工厂模式的主要目的是将对象的创建过程封装起来,使得客户端在使用对象时,无需关心对象...
创建型设计模式---工厂设计模式实现
工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端需要创建一个对象时,只需要指定其类型即可,而无需知道具体的创建过程。工厂模式将对象的创建过程封装了起来,使得...