`

01 Simple Factory 模式

 
阅读更多

转自:http://www.riabook.cn/doc/designpattern/

Design Pattern: Simple Factory 模式

Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。

假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 UML 类别图来表示以上的概念:



 

如上图所示的,MusicBoxDemo代表了客户的角色,它只依赖于IMusicBox介面,而不关心特定的实作,实际如何产生IMusicBox的实例由MusicBoxFactory完成,以一个简单的程式来实现上面这个UML类别图:

 

IMusicBox.java

public interface IMusicBox {
    public void play();
}

 

PianoBox.java

public class PianoBox implements IMusicBox {
    public void play() {
        System.out.println("拨放钢琴音乐:)");
    }
}

 

ViolinBox.java

public class ViolinBox implements IMusicBox {
    public void play() {
        System.out.println("拨放小提琴音乐^_^");
    }
}

 

MusicBoxFactory.java

public class MusicBoxFactory {
    public static IMusicBox createMusicBox(String name) 
                               throws InstantiationException, 
                                      IllegalAccessException, 
                                      ClassNotFoundException {
        // 这边使用的是Java的Reflection机制来产生实例
        // 不过客户端不用管啦
        // 以后就算改变了这边的程式,客户端程式是不用更改的
        return (IMusicBox) Class.forName(name).newInstance();
    }
}

 

MusicBoxDemo.java

public class MusicBoxDemo {
    public static void main(String[] args) throws Exception {
        playMusicBox(MusicBoxFactory.createMusicBox("PianoBox"));
        playMusicBox(MusicBoxFactory.createMusicBox("ViolinBox"));
    }
    
    public static void playMusicBox(IMusicBox musicBox) {
        musicBox.play();
    }
}

 

由于客户端只依赖于IMusicBox介面,所以即使您日后改变了createMusicBox()中的实作方式,对客户端是一点影响也没有的。

来看看Simple Factory的类别结构:



 

客户只要面对Factory,客户依赖于产品介面,产品的具体实作是可以与客户隔开的,它们也是可以抽换的。

 

参考资料:

工厂模式——看这一篇就够了

  • 大小: 27 KB
  • 大小: 27.1 KB
分享到:
评论

相关推荐

    设计模式 创建型模式 Simple Factory模式(简单工厂)

    Simple Factory模式: 定义创建对象的接口,并封装对象的创建。 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来处理一些问题。抽象出一些类的公共接口作为抽象基类或者接口。这样的话,我们将会面临一个...

    设计模式 t01SimpleFactory

    "t01SimpleFactory"指的是简单工厂(Simple Factory)设计模式,它是创建型设计模式之一。 简单工厂模式的核心思想是通过一个公共的工厂类来创建对象,这个工厂类负责实例化客户所需的对象,客户只需要知道具体的...

    java 设计模式 Facade外观模式 Simple Factory 简单工厂模式

    总的来说,Facade模式和Simple Factory模式是Java设计模式中的重要组成部分,它们分别解决了简化复杂系统接口和对象创建的问题。学习和运用这些模式,不仅可以提高代码质量,还能使软件更加灵活,适应未来可能的变化...

    java工厂模式SimpleFactory

    在实际应用中,SimpleFactory模式可能存在一些局限性,例如,当产品种类增多时,工厂类可能会变得过于复杂,违背了“单一职责原则”。这时,可以考虑使用更高级的工厂模式,如AbstractFactory(抽象工厂)或者...

    SimpleFactory

    "SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...

    Simple Factory模式.doc

    简单工厂模式(Simple Factory Pattern)是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,当一个类不知道它所必须创建的对象的类的时候,它会将这个任务委托给一个工厂对象。在...

    Factory_Method&&Simple_Factory

    简单工厂模式(Simple Factory Pattern)是工厂方法模式的一个简化版本,它没有定义工厂接口,只有一个具体工厂类负责创建所有对象。简单工厂模式适用于产品种类较少,且不会频繁改变的情况。 在实际应用中,工厂...

    001SimpleFactory.rar

    总结来说,"001SimpleFactory.rar"压缩包中的代码示例可能是为了演示如何在实际项目中运用简单工厂模式,帮助开发者理解和学习如何通过工厂类来封装对象的创建过程,以实现代码的模块化和可扩展性。通过研究和实践这...

    Simple Factory Pattern.rar【GoF的简单工厂模式(C#源码)】

    简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的...SimpleFactory作为Creator。我已经用C#的源码编程了:请下载Simple Factory Pattern.rar

    设计模式之Factory

    Factory模式通常分为简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)三种主要类型。 1. **简单工厂**:这是最简单的形式,它包含一个静态方法,根据传入的参数返回特定类型...

    SimpleFactory1

    总结来说,"SimpleFactory1"实例展示了如何运用简单工厂模式来创建对象,通过工厂类封装了对象的实例化过程,使客户端代码更加简洁,同时也提供了一种灵活的方式来扩展产品种类,尽管这可能需要修改工厂类。...

    simpleFactory.zip

    本示例“simpleFactory.zip”关注的是设计模式中的一个基础模式——简单工厂(Simple Factory)模式,该模式在Java中得到了广泛的应用。简单工厂模式属于创建型设计模式,它的主要目的是通过一个公共的工厂类来创建...

    simplefactory.zip

    在我们的“simplefactory.zip”文件中,我们可以看到一个简单的工厂模式实现示例。这个例子可能包括以下几个部分: - 一个接口,例如`Product`,定义了产品类的基本行为。 - 若干个实现`Product`接口的具体产品类,...

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    C# SimpleFactory Demo

    C#简单工厂模式在项目需求中的应用Demo,适合新手。

    工厂模式FactoryMode

    public class SimpleFactory { public static Product createProduct(String type) { if ("ProductA".equals(type)) { return new ProductA(); } else if ("ProductB".equals(type)) { return new ProductB(); ...

    Factory模式

    Factory模式是一种设计模式,它是创建型模式的一种,主要用于解决对象创建的问题。在软件工程中,当我们需要创建一系列相关或相互依赖的对象时,而不希望客户端代码直接指定具体类的情况下,Factory模式就显得尤为...

    Simple-Factory-for-Salary.rar_factory

    【标题】"Simple-Factory-for-Salary.rar_factory" 指的是一个使用简单工厂设计模式来计算薪资的项目,特别适用于Visual C++ 6.0(VC6)环境。这个项目可能包含了一个或多个用于创建薪资计算类实例的工厂类,以适应...

    java_simple_factory.rar_factory

    在这个“java_simple_factory.rar_factory”压缩包中,包含了一个PDF文档“java简单工厂模式入门.pdf”和一个文本文件“www.pudn.com.txt”,它们都是为了帮助初学者理解并掌握这个模式。 简单工厂模式的核心思想是...

    calculator-of-Simple-Factory-Pattern.rar_factory

    总的来说,这个"calculator-of-Simple-Factory-Pattern.rar_factory"项目展示了如何运用简单工厂模式来构建一个计算器系统,使得系统能够根据不同的计算需求动态地创建相应的计算器对象,同时也为未来的功能扩展打下...

Global site tag (gtag.js) - Google Analytics