`

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

阅读更多

工厂模式把对象的创建和使用分离,这样做的好处是分离具体对象的创建和使用,达到了尽量少的代码修改。

 

简单工厂模式又被称之为静态工厂方法模式,它是通过一个静态方法进行对象的实例化。

 

 

下面是一个数据库的操作工厂类,里面有三种数据库的操作类,如果直接使用对象:

MySqlOperate mySqlOperate = new MySQLOperate();

 

当数据库改成Oracle时,客户端的代码需要修改,而如果使用工厂模式:

DataOperate dataOperate = DataOperateFactory.getInstance();

 

这样做客户端代码就不需要关心是Mysql,还是Oracle了,修改Oracle时,只要修改工厂类的方法就可以了,当然下面的dataType可以写到配置文件里,这样,只要修改配置文件就可以轻松切换到Oracle了。

 

public class DataOperateFactory {
    public static final int ORACLE = 0; //定义三个表示数据库类型的常量
    public static final int MYSQL = 1;
    public static final int SQLSERVER = 2;
 
    private static DataOperate db;
    private static int dataType = MYSQL;
    /**
     * 根据数据库类型(dataType)取得一个数据库操作类的实例,
     * 这里对DataOperate使用了单例模式,因为OracelDataOperate等都是无状态的工具类,
     * 所以整个系统只保留一个实例就行了。
     *
     * @return 返回的是接口,客户端不必关心具体是用那个实现类
     */
    public static DataOperate getInstance() {
        if (db == null ) {
            if (dataType == ORACLE) //根据dateType返回相应的实现类
                return new OracelDataOperate();
            if (dataType == MYSQL)
                return new MysqlDataOperate();
            if (dataType == SQLSERVER)
                return new SqlserverDataOperate();
        }
        return db;
    }
}

由上例可以看到,客户端代码不用改变,这个很重要,比如说你给第三方提供jar包,客户端调用代码刚开始是采用Mysql的,后来改成Oracle,显然客户端代码需要改动

又上例我们也可以看到,尽管我们的简单工厂模式解决了,客户端代码不用修改的目的,但是当增加新的产品时,工厂类必须要修改,这样扩展性就有了限制了。



分享到:
评论
1 楼 LyAn_爱踢爱死 2014-08-11  
对于最后一句话,楼主能不能大概的讲解下。比如怎么修改啊

相关推荐

    java设计模式----抽象工厂模式

    java设计模式----抽象工厂模式,简单工厂模式代码 代码内部

    java设计模式--工厂模式

    Java设计模式中的工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,从而提高了代码的可扩展性和可维护性。在HeadFirst...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    java设计模式之工厂模式

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

    Java设计模式----通俗易懂版

    Java设计模式是软件工程中的一种重要思想,它总结了在解决特定问题时,程序员们反复使用的一些最佳实践和解决方案。这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者...

    Java设计模式教程 - Java设计模式 - 工厂模式

    Java设计模式是软件开发中的重要概念,它们是解决常见编程问题的经验总结,为代码组织提供了标准的结构和模式。工厂模式作为最常用的设计模式之一,是创建型模式的代表,它的主要目标是提供一个创建对象的接口,但让...

    JAVA设计模式例程-工厂模式-1

    这个名为"JAVA设计模式例程-工厂模式-1"的压缩包文件提供了一个关于工厂模式的实例,可以帮助学习者更好地理解和应用这个模式。 工厂模式的核心思想是提供一个创建对象的接口,但让实现延迟到子类去做,这样做的...

    Java设计模式教程 - Java设计模式 - 抽象工厂模式

    抽象工厂模式是Java设计模式中的一种创建型模式,它提供了创建对象族的接口,而具体的对象族由子类决定。这种模式的主要目的是隔离接口与实现,使得客户端代码在更换产品族时无需修改,增强了软件的可扩展性和可维护...

    Java设计模式-简单工厂

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

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

    简单工厂模式是面向对象设计中的一种经典设计模式,它属于创建型模式,主要用来解决对象的创建问题。在Java编程中,简单工厂模式通过一个中心工厂类来负责创建相关的对象,而无需让客户端代码直接new具体的产品类。...

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

    Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel

    Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel - 详情:https://blog.csdn.net/Dream_Weave/article/details/83989879

    java常用设计模式-抽象工厂模式

    java常用设计模式-抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建...

    设计模式--工厂模式java例子

    设计模式是软件开发中的一种最佳实践,用于解决常见的...总的来说,工厂模式是Java编程中常用的设计模式之一,尤其适用于需要根据条件创建不同对象的情况。理解并熟练应用工厂模式,能够提高代码的可维护性和可扩展性。

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

    简单工厂模式是Java设计模式中创建型模式的一种,也被称为静态工厂方法模式。该模式的主要思想是由一个专门的工厂类来负责创建其他类的实例。简单工厂模式通过封装创建对象的过程,使得调用者无需关心对象的具体创建...

    JAVA设计模式例程-工厂模式-2

    工厂模式是设计模式中的一种,尤其在Java中应用广泛。本文将深入探讨Java中的工厂模式,以及如何通过实例来理解它的应用。 工厂模式属于创建型设计模式,它的主要目标是提供一个接口,用于创建相关或依赖对象的家族...

    JAVA设计模式--程序设计--反射--注解--泛型

    Java设计模式、程序设计、反射、注解和泛型是Java开发中的核心概念,它们各自在不同的场景下发挥着重要作用,构建出高效、可维护的软件系统。 首先,Java设计模式是面向对象编程中的一种最佳实践,是解决常见问题的...

    JAVA设计模式---100%推荐

    JAVA设计模式更是Java开发者必须掌握的核心技能之一,因为它可以提高代码的可读性、可维护性和复用性。这篇名为"JAVA设计模式---100%推荐"的资源,可能是对Java设计模式的深入解析,旨在帮助开发者更好地理解和应用...

    Java设计模式-抽象工厂

    **Java设计模式——抽象工厂** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图。抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这...

    java设计模式-工厂模式

    Java设计模式中的工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个工厂对象来完成创建工作。这种模式的核心在于封装了对象...

Global site tag (gtag.js) - Google Analytics