`
Fis
  • 浏览: 86372 次
  • 性别: Icon_minigender_1
  • 来自: 龙城
社区版块
存档分类
最新评论

Design Pattern: Simple Factory 模式

阅读更多
文章来源:Gossip@caterpillar

  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,客户依赖于产品介面,产品的具体实作是可以与客户隔开的,它们也是可以抽换的。
  • 大小: 17.7 KB
  • 大小: 17.8 KB
分享到:
评论

相关推荐

    designpattern:设计图案的使用

    1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。 GOF在《设计模式》一书中将工厂模式分为两类...

    java简易版开心农场源码-DesignPattern:从0开始深入理解设计模式的原理及应用

    DesignPattern 从0开始深入理解设计模式的原理及应用 1.设计原则 1.8.设计原则总结 ​ 学习设计原则是学习设计模式的基础。在实际开发过程中, 并不要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量...

    design_pattern:设计模式研究商店

    Java中的`AbstractFactory`、`SimpleFactory`和`FactoryMethod`都是其变体。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 4. **建造者模式**:将复杂对象的构建...

    DesignPattern

    在这个名为“DesignPattern”的压缩包中,包含了一个关于简单工厂模式(Simple Factory Pattern)的示例,名为“DesignPattern_SimpleFactoryPattern”。 简单工厂模式的核心思想是将对象的创建过程封装到一个单独...

    Factory_Method&&Simple_Factory

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

    uu-design-pattern:23种设计模式案例

    23种设计模式演示代码文件结构图gof23 |- creational(创建型模式) |- simplefactory 简单工厂模式案例 |- factorymethod 工厂方法模式案例 |- abstractfactory 抽象工厂模式案例 |- builder 建造者模式案例 |- ...

    DesignPattern(VS2019_观察者模式_工厂模式_抽象工厂模式)完整示例源代码.zip

    在压缩包中的"DesignPattern"文件夹中,你应该能够找到分别展示了这些模式的源代码实现。通过阅读和理解这些示例,你可以学习如何在实际项目中应用观察者模式和工厂模式,以及它们如何帮助提高代码的可读性、可维护...

    java版中国象棋源码-hello-design-pattern:设计模式学习笔记

    hello-design-pattern 设计模式学习笔记,此项目参考《大话设计模式》,只能作为入门级设计模式学习 设计原则 职责单一原则 开放-封闭原则 依赖倒转原则 高层模块不依赖底层模块,两个模块都应该依赖抽象。抽象不...

    DesignPattern:在这里写下 23 个 DesignPatterns,我可以分享最好的来解释它是什么

    设计模式是软件工程中经过长期实践验证的、解决常见问题的有效解决方案模板,它们代表了在特定上下文中,针对某...在`DesignPattern-master`这个压缩包中,可能包含了这些设计模式的Java实现示例,供学习者参考和实践。

    Java中的design-patterns::open_book:使用通俗易懂的案例,类图,以及配套学习笔记来详解Java的二十种设计模式!

    :check_mark:简单工厂模式( Simple Factor Pattern ) :memo: , :check_mark:工厂方法模式( Factory Method Pattern ) :memo: , :check_mark:抽象工厂模式( Abstract Factroy Pattern ) :memo: , :check_...

    design-pattern-java.pdf

    六个创建型模式 六个创建型模式 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一) 工厂三兄弟之简单工厂模式(二) 工厂三兄弟之简单工厂模式(三) 工厂三兄弟之简单工厂模式(四) 工厂方法...

    [源代码] 《易学 设计模式》 随书源代码

    第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法模式 (FactoryMethod) 第05章 再接再厉:抽象工厂模式 (AbstractFactory) 第06章 孜孜不倦:创建者模式 (Builder) 第07章 照猫画虎:...

    软件设计模式作业+答案

    简单工厂模式(Simple Factory Pattern):不符合开闭原则,需要修改已有代码来添加新的创建逻辑。 抽象工厂模式(Abstract Factory Pattern):在工厂模式的基础上,提供了一种抽象的创建对象的接口,可以创建多种...

    design-pattern

    ##### 3.1 简单工厂模式 (Simple Factory Pattern) 简单工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。该模式适用于当一个系统只需要提供一个产品族中的一个实例时。 1. **工厂...

    良葛格DesignPattern学习笔记

    良葛格的《Design Pattern学习笔记》不仅涵盖了经典的GOF设计模式,还额外介绍了几种多线程模式,这使得这份学习笔记成为了一个宝贵的学习资源。下面将对其中的部分设计模式进行详细介绍。 #### 二、GOF设计模式 ...

    Design.Patterns.Explained.Simply

    This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is not tied to any specific programming language and will be good for you as long as you have a...

    C#设计模式-吕震宇

    本资料来源于吕震宇博客,欢迎访问 ...经过整理,方便大家阅读。...C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - 面向对象基本概念复习

    SimpleFactory.wmv

    Insus.net录制的design Pattern 简单工厂的小影片

    Simple-Factory-for-Salary.rar_factory

    【描述】"Simple Factory Design-Pattern for Calculate Salary for VC6 project" 描述了项目的核心设计思想——简单工厂模式。这是一种创建型设计模式,它提供一个创建对象的接口,但允许子类决定实例化哪一个类。...

    工厂模式代码

    1. 简单工厂模式(Simple Factory Pattern):也称为静态工厂方法模式,通过一个静态方法来创建对象,该静态方法根据传入的参数返回不同的实例。 2. 工厂方法模式(Factory Method Pattern):属于多态性设计模式,...

Global site tag (gtag.js) - Google Analytics