`

统一对象创建--简单工厂模式

阅读更多

创建对象在面向对象程序设计中几乎无处不在,在Java中实例化一个对象是通过new关键字实现的,对对象的赋值、尤其是复杂对象的赋值往往是一个相对复杂的过程。工厂模式的作用就是对对象的创建过程进行封装的一个过程。根据不同的业务场景,工厂模式又分为:简单工厂模式、工厂方法模式、抽象工厂模式。本次总结先说下简单工厂模式

 

简单工厂模式

 

简单工厂模式一般是把对象的创建过程单独提取到一个工厂类中进行,工厂类中的对象创建方法一般都是静态方法。这种方式的好处是,这个工厂类可以多处使用,能保证对象的创建过程的一致性(全局统一),以及代码的复用性。类图也很简单:




 
 

这里以模拟商场下单来说明“简单工厂模式”的用法,可以把Client看做是一个网上商场,提供一个orderProduct的下单方法。Iproduct是商品接口类,ProductAProductB是具体的实现,商品经过生产、打包、运输送到客户手里。下面来看具体的实现:

 

目标对象实现

 

首先看下商品基类Iproduct,以及其两个具体的商品实现类ProductAProductB

Iproduct

public interface Iproduct {
 
    //生产
    void create();
 
    //打包
    void packages();
 
    //运输
    void transport();
}
 

 

 ProductA

 
public class ProductA implements Iproduct{
    public void create() {
        System.out.println("商品A生产完成");
    }
 
    public void packages() {
        System.out.println("商品A打包完成");
    }
 
    public void transport() {
        System.out.println("商品A运输完成");
    }
}

ProductB

 

public class ProductB implements Iproduct {
    public void create() {
        System.out.println("商品B生产完成");
    }
 
    public void packages() {
        System.out.println("商品B打包完成");
    }
 
    public void transport() {
        System.out.println("商品B运输完成");
    }
}
 

 

 工厂类实现

 

商品接口类和实现类实现完成后,再来看下工厂类ProductFactory,其静态方法会根据不用的参数类型生产出不同的商品,给对象赋值是一个负责的业务逻辑,这里省略。

public class ProductFactory {
 
    /**
     * 静态工厂方法
     * @param type
     * @return
     */
    public static Iproduct createProduct(String type){
        if("A".equals(type)){
            //省略对象赋值过程
            return new ProductA();
        }else if ("B".equals(type)){
            //省略对象赋值过程
            return new ProductB();
        }
        return null;
    }
}
 

 

Client业务类实现

 

接下来看下Client类,可以把这个类看做是一个网上商城,提供一个下单方法:

public class Client {
 
    /**
     * 下单方法,选择不同的商品类型进行购买
     * @param type
     */
    public void orderProduct(String type){
        Iproduct product = ProductFactory.createProduct(type);
 
        //生产商品
        product.create();
        //打包商品
        product.packages();
        //运输商品
        product.transport();
        System.out.println("订单完成");
    }
}
 

 

整个模式的实现完毕,最后创建main方法进行测试:

public class Main {
 
    public static void main(String[] args) {
        Client client = new Client();//创建商城
        client.orderProduct("A");//选择购买"A"商品
       
        client.orderProduct("C");//选择购买不存在的"C"商品
    }
}

 

 

运行main方法,打印信息如下:

产品A生产完成
产品A打包完成
产品A运输完成
购买商品A的订单完成
商城没有该商品,请选择A、B商品进行购买

小结

 

 

简单工厂模式,总的来说使用起来比较简单,需要注意的是商品必须要有一个基类Iproduct(并不局限为接口,也可以是抽象类),这样在Client类中可以实现面向接口编程,而不必在意具体的实现,但还不够彻底,ProductFactory还是具体的实现类。如果需要创建的对象数目较少,且对象类目单一,使用简单工厂模式实现也是不错的选择。

 

出处:

http://moon-walker.iteye.com/blog/2396985

  • 大小: 10.5 KB
0
0
分享到:
评论

相关推荐

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

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节。在这个模式中,一个专门的工厂类负责创建特定类型的对象,而...

    设计模式系列编程源码----简单工厂模式

    简单工厂模式是软件设计模式中的一种创建型模式,它的主要思想是定义一个工厂类,这个类负责创建对象,客户端通过调用工厂类的特定方法来获取所需的对象,而无需关心对象是如何被创建的。这种模式将对象的创建过程...

    1.java设计模式-创建者模式-简单工厂模式.pdf

    在实际应用中,简单工厂模式非常常见,尤其是在需要提供一个统一的接口来创建不同或不固定数量的类实例时。但需要注意的是,在产品种类变得复杂或者需求频繁变动的情况下,可能需要考虑使用更灵活的设计模式,如工厂...

    一例读懂设计模式-单例模式、简单工厂模式.zip

    简单工厂模式是一种创建型设计模式,它提供一个工厂类来负责创建对象,而不是让客户端代码直接创建。这样,客户端可以避免知道具体类的细节,只需调用工厂方法即可获取所需对象。 - 工厂类:包含一个或多个用于...

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

    这些代码示例在`java`环境下实现,展示了如何利用工厂模式进行对象创建。通过这种方式,我们可以在不暴露对象创建细节的情况下,让客户端代码更加简洁,同时便于后期维护和扩展。在实际项目中,工厂模式经常与其他...

    软件编程模式---工厂模式基础

    工厂模式是设计模式中的一种,属于创建型模式,它的主要目的是为了封装对象的创建过程,提供一个统一的接口来生成不同类型的实例,而无需暴露具体的创建逻辑。这篇教程将深入探讨工厂模式的基础知识,帮助你理解和...

    设计模式学习笔记(一)--简单工厂模式源码

    综上所述,简单工厂模式在处理对象创建时提供了一种有效的抽象,但需要权衡其在可扩展性和维护性上的局限。在实际开发中,可以根据项目的特性和需求来选择是否使用简单工厂模式。对于更复杂的情况,可以考虑使用其他...

    Python 程序语言设计模式思路-创建型模式:工厂模式,创建对象的统一接口,封装对象的创建逻辑

    工厂模式(Factory Pattern)作为创建型模式的一种,通过提供一个统一的接口来创建对象,封装对象的创建逻辑,提高代码的灵活性和可维护性。

    设计模式--抽象工厂模式实现多数据库连接

    总结起来,抽象工厂模式在实现多数据库连接时,通过提供一个统一的接口来创建不同数据库的对象,使得代码更加模块化,易于维护和扩展。在.NET环境下,利用抽象工厂模式可以轻松地在不同数据库之间切换,满足项目需求...

    设计模式概述,讲述什么是设计模式的ppt - 简单工厂模式

    ### 设计模式概述——简单工厂模式详解 #### 一、设计模式概览 ...综上所述,简单工厂模式是一种非常实用的设计模式,尤其适合用于简化对象创建的场景。通过合理地运用这种模式,可以有效地提高代码的质量和可维护性。

    设计模式-工厂模式

    - **解耦**:客户端代码不再依赖于具体的对象创建逻辑,只依赖于抽象。 - **扩展性**:添加新产品类型时,只需要添加新的工厂类,而不需要修改已有的代码。 - **灵活性**:工厂模式提供了更好的封装性,可以根据需求...

    设计模式-工厂模式 Java源码

    工厂模式是设计模式中的一种创建型模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码无需关心具体对象的创建细节,只需通过一个统一的接口来获取所需的对象。 在Java编程语言中,工厂模式通常分为简单...

    创建型-抽象工厂模式(Abstract Factory)

    抽象工厂模式是设计模式中的一种,它属于对象创建型模式,主要解决的是当系统需要创建一组相关或相互依赖的对象时,而这些对象的类在运行时可能未知的问题。这种模式提供了一个接口,用于创建相关或依赖对象的家族,...

    设计模式_--_工厂模式和单件模式

    单例模式是一种常用的对象创建型模式,其核心在于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 **2. 应用场景** - 当系统只需要一个实例对象时,如日志对象、线程池等。 - 需要控制资源的共享访问...

    OC-工厂模式-创建不同按键

    - **封装性**:工厂模式隐藏了对象创建的细节,客户端只需知道如何调用工厂方法即可。 - **扩展性**:如果需要添加新的按键类型,无需修改已有代码,只需增加新的工厂类和相应的方法。 - **多态性**:工厂方法...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...

    简单工厂模式,工厂方法模式,抽象工厂模式

    在软件设计模式中,工厂模式是一种非常基础且实用的模式,它主要用来解决对象创建的问题,使得代码在面对多种产品类时保持灵活和解耦。本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并...

    简单工厂模式

    简单工厂模式是设计模式中的结构型模式之一,它是创建型设计模式的基础,为客户端代码提供了创建对象的便捷途径。在软件工程中,当一个类不明确它应当实例化哪个子类时,简单工厂模式就可以发挥作用。它通过一个公共...

    模式之一工厂模式-------------------------

    工厂模式属于创建型设计模式,它的主要目的是通过提供一个统一的接口来创建对象,使得客户端代码无需关心具体对象的创建过程,只需通过工厂方法调用来获取所需的对象。 在工厂模式中,我们通常定义一个抽象工厂类,...

    设计模式ppt-14.抽象工厂

    抽象工厂模式是一种设计模式,属于创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种模式主要用于处理具有多种产品等级结构的系统,允许客户端在运行时选择一个产品族,并...

Global site tag (gtag.js) - Google Analytics