`

设计模式(5)- 工厂方法模式

阅读更多

工厂方法模式

      1.定义

       定义个一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使一个类的实例化延迟到其子类。

      2.示例代码

      

/*导出的文件对象接口,即工厂方法所创建的对象接口*/
public interface ExportFileApi{
   public boolean export(String data);
}

/*导出txt格式的实现类*/
public class ExportTxtFile implements ExportFileApi{
   public boolean export(String data){
      System.out.println("导出data到文本文件");
      return true;
   }
}

/*导出到数据库备份的实现类*/
public class ExportDB implements ExportFileApi{
   public boolean export(String data){
      System.out.println("导出data到数据库备份");
      return true;
   }
}

   

/*实现导出数据的业务功能对象,即工厂创建器*/
public abstract class ExportOperate{
   public boolean export(String data){
       //使用工厂方法
       ExportFileApi api = factoryMethod();
       return api.export(data);
   }
   //工厂方法,创建导出文件对象的接口对象
   protected abstract ExportFileApi factoryMethod();
}

/*子类工厂创建导出txt文本的数据导出对象*/
public class ExportTxtFileOperate extends ExportOperate{
    protected ExportFileApi factoryMethod(){
         //创建导出成文本文件格式的对象
         return new ExportTxtFile();
    }
}

/*子类工厂创建导出数据库DB备份对象*/
public class ExportDBOperate extends ExportOperate{
    protected ExportFileApi factoryMethod(){
         //创建导出成文本文件格式的对象
         return new ExportDB();
    }
}

   

/*客户端自主选择导出txt还是导出到数据库备份*/
public class Client{
    public static void main(String args[]){
        //创建需要使用的数据导出对象
        ExportOperate operate = new ExportDBOperate();
        //调用输出数据的功能方法
        operate.export("测试数据");
    }
}

 

   3.实际应用

       工厂方法可以让你在实现功能的时候,如果需要某个产品对象,只需要产品的接口即可,而无需关心具体的实现。选择具体实现的任务延迟到子类去完成。工厂方法给子类提供了一个挂钩,使得扩展新的对象版本变得非常容易。比如需要扩展一个导出xml格式的数据,只需新增一个子类来提供新的工厂方法实现,然后在客户端使用新的子类即可。

 

工厂方法模式的本质:延迟到子类来选择实现
分享到:
评论

相关推荐

    NET设计模式--工厂方法例子源码

    NET设计模式--工厂方法例子源码

    c++设计模式-工厂方法模式

    在标题“c++设计模式-工厂方法模式”中,我们关注的是如何在C++中实现工厂方法这一设计模式。工厂方法模式的核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以使类的实例化过程...

    我讲设计模式--工厂方法

    标题"我讲设计模式--工厂方法"暗示我们将深入探讨工厂方法的设计模式及其应用。这篇博文可能涉及了该模式的基本概念、工作原理以及实际场景下的使用示例。遗憾的是,由于没有直接提供博客的具体内容,我将基于工厂...

    设计模式之-工厂方法-FactoryMethod

    《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...

    设计模式-工厂方法模式

    工厂方法模式是设计模式中的创建型模式,它提供了一种创建对象的最佳方式。在这个模式中,一个类(称为工厂类)不再直接实例化具体的产品,而是定义一个接口或抽象类,由子类来决定实例化哪一个类。这样做的好处在于...

    创建型设计模式---工厂设计模式实现

    创建型设计模式---工厂设计模式实现

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

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    iOS设计模式-工厂方法

    **工厂方法设计模式** 在iOS开发中,设计模式是一种被广泛采用的最佳实践,它提供了一种在不指定具体实现的情况下创建对象的方式。工厂方法(Factory Method)是面向对象设计模式中的一种,属于创建型模式。它定义...

    设计模式-工厂方法模式视频

    工厂方法模式是面向对象设计中的一种经典设计模式,属于创建型模式。在软件工程中,当我们需要创建一系列相关或相互依赖的对象时,而不希望指定具体的类,工厂方法模式提供了一个很好的解决方案。 工厂方法模式的...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定它们的具体类。 - 建造者模式(Builder):将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示...

    java设计模式--工厂模式

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

    设计模式----工厂模式

    《设计模式——工厂模式》 在软件工程领域,设计模式是一种在特定情境下解决常见问题的模板,它为程序员提供了一种标准的解决方案。工厂模式是面向对象设计中最为人熟知的设计模式之一,属于创建型模式,其主要目标...

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

    在这些模式中,工厂模式尤为突出,它是一种创建型设计模式,为对象的创建提供了抽象接口,使得代码无需直接实例化具体类,而是通过工厂方法来创建对象。 在Java编程语言中,工厂模式的应用广泛且实用。它主要分为三...

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

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

    优秀的设计模式示例-工厂模式

    工厂模式是设计模式中的一种,属于创建型模式,它提供了一种封装对象创建过程的方法,使得创建对象的过程与使用对象的代码分离,从而提高了代码的灵活性和可扩展性。 工厂模式的核心思想是通过一个工厂类来负责创建...

    设计模式-工厂方法代码

    在给定的“设计模式-工厂方法代码”文件中,我们可以深入探讨工厂方法这一特定的设计模式,以及它在Java编程中的应用。 工厂方法(Factory Method)是创建型设计模式之一,属于行为模式。它的主要作用是定义一个...

    Java设计模式-工厂方法

    在"Java设计模式-工厂方法"的Demo中,我们通常会看到以下关键组件: 1. **抽象产品(Abstract Product)**:这是要创建的对象的接口。它定义了产品的公共接口,这样任何创建的产品都可以被客户端以相同的方式使用,...

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

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

Global site tag (gtag.js) - Google Analytics