`
penciltim
  • 浏览: 43709 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

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机制来产生实例
        IMusicBox box = (IMusicBox) Class.forName(name).newInstance()

        // 也许你还会作一些对box属性设定之类的处理...
        // ...
    return box;
    }
}


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()的实现方式(接受不同的music box),着对客户端是一点影响都没有。简单点来说当音乐盒制作方式因技术进步而改变,都不会影响客户如何操作音乐盒,因为用户只需要知道操作接口即可。

来看看Simple Factory的类结构:


客户只要面对Factory,客户依赖于产品接口,产品的具体实现时可以与客户隔离的,他们也是可以抽换的。
将Simple Factory的概念扩充,可以设计出各种物件皆通用的Factory类,作为专门生成、组装、管理对象的容器。
  • 大小: 17.7 KB
  • 大小: 17.8 KB
分享到:
评论
5 楼 penciltim 2009-04-01  
河蟹骑士 写道

penciltim 写道河蟹骑士 写道好多错别字,冰透,哭户短,献丑也不能这么献啊看得挺仔细的嘛,我不会五笔呀,没办法JJ啊!我也是拼音啊!您仔细点吧!要不我看着累,您多照顾着点菜鸟

  1. .........哦
4 楼 河蟹骑士 2009-04-01  
penciltim 写道

河蟹骑士 写道好多错别字,冰透,哭户短,献丑也不能这么献啊看得挺仔细的嘛,我不会五笔呀,没办法

JJ啊!我也是拼音啊!您仔细点吧!要不我看着累,您多照顾着点菜鸟
3 楼 geminiyellow 2009-03-31  
还好人漂亮
2 楼 penciltim 2009-03-31  
河蟹骑士 写道

好多错别字,冰透,哭户短,献丑也不能这么献啊

看得挺仔细的嘛,我不会五笔呀,没办法
1 楼 河蟹骑士 2009-03-31  
好多错别字,冰透,哭户短,献丑也不能这么献啊

相关推荐

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

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

    Simple Factory模式.doc

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

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

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

    java工厂模式SimpleFactory

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

    SimpleFactory

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

    java 设计模式

    在这个压缩包中,提到了三种主要的设计模式:Bridge模式、Command模式和FactoryMethod以及SimpleFactory模式。 1. Bridge模式: Bridge模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使得它们可以独立...

    Factory_Method&&Simple_Factory

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

    设计模式 t01SimpleFactory

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

    常见的十种设计模式Java工程文件

    4. **Simple Factory模式**:Simple Factory模式提供一个静态工厂方法,用于创建对象。它简化了客户端代码,但不具备扩展性,因为没有引入抽象类或接口。 5. **Singleton模式**:Singleton模式确保一个类只有一个...

    001SimpleFactory.rar

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

    python设计模式

    Simple Factory模式是一种创建型设计模式,它提供一个静态方法来创建对象,而不是让客户端直接实例化。这种方式隐藏了创建对象的复杂性,使得客户端可以更简单地使用对象,而无需关心对象是如何创建的。在Python中...

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

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

    设计模式,实用的设计模式

    在这个PPT中,主讲人宋航探讨了几个核心的设计原则和模式,包括开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则以及迪米特原则,并介绍了Simple Factory模式。 1. **开闭原则**: 开闭原则是软件设计的核心...

    C#设计模式分析

    SimpleFactory模式还可以有更进一步的演化形式,其中一种常见的变化是让抽象产品角色本身承担工厂的角色。也就是说,抽象产品类不仅定义了产品的接口,还提供了创建子类实例的能力。这种方式可以更好地适应需求的...

    simpleFactory.zip

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

    SimpleFactory1

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

    设计模式之Factory

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

    simplefactory.zip

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

    C#设计模式源码

    5. **SimpleFactory模式**:简单工厂模式是一种创建型设计模式,提供一个创建对象的静态方法,客户端通过调用这个静态方法来创建所需的对象,而无需关心具体创建逻辑。 6. **UsingClasses**:这可能是指在C#中使用...

Global site tag (gtag.js) - Google Analytics