`
blues1021
  • 浏览: 135377 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Simple Factory(Static factory)简单工厂模式-java设计模式1

 
阅读更多

  一、概念:
       简单工厂模式,就是一个应用声明了Factory对象,然后传入参数,Factory根据参数判断决定返回那个子类对象。
      这些子类通常具有共同的父类和共同的方法,但是不同的类执行的任务个不相同。
  二、示例模型:
 下面是James W.Cooper著的《Java Design Patterns A Tutorial》举的一个经典例子,支持“Jerome Cen”和"Cen,Jerome"姓名格式输入和计算输出的程序:
  


三、重点解析示例:
 其 中 Namer为Public的基类。FirstLast用String类的lastIndexOf(" "),substring()方法给first,last赋值。LastFirst用String类的IndexOf(" ,"),substring()方法给first,last赋值。NamerFactory用:
public class NamerFactory {
    //Factory decides which class to return based on
    //presence of a comma
    public Namer getNamer(String entry) {
        //comma determines name order
        int i = entry.indexOf(",");  
        if (i > 0)
            return new LastFirst(entry);
        else
            return new FirstFirst(entry);
    }
}
其关键就在NamerFactory中用了 int i = entry.indexOf(",");做了判断(根据参数及初始化基类的数据成员),用来决定返回的子类对象类型。
 在 Person类中因为为一个基于AWT的支持输入和计算输出的组件,在Button compute组件中注册了compute.AddActionListener(this);然后可以直接写public void actionPerformed(ActionEvent e){
//用e.getSource==compute时,然后调用computeName()方法
}

  private void computeName() {
      namer = nfactory.getNamer (entryField.getText());//工厂模式用工厂类参数判断返回的子类,而模型类作为子类的基类和工厂类的属性(聚合关系)。
      txFirstName.setText(namer.getFirst ());//模型基类中声明的方法。
      txLastName.setText(namer.getLast ());
  }
 实际上对用户屏蔽了具体调用的子类,在Simple Factory处为用户提供了统一的接口,得到基类的对象,用对象调用基类方法实现要求。
所以在学习J2SE API时提供不同类型参数的类,可以其实现就是由具体子类实现的,当然也能是类本身实现的。

分享到:
评论

相关推荐

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

    简单工厂模式的实质是由一个工厂类根据传入的参量,动态决定应该创建出哪一个产品类的实例。简单工厂模式实际上不属于23个GoF模式,但它可以作为GoF的工厂方法模式(Factory Method)的一个引导。 UML: ...

    简单工厂模式

    java设计模式 简单工厂模式详解 simple factory static pattern

    php设计模式之简单工厂模式详解

    1、简单工厂模式(Simple Factory)又叫做 静态工厂方法模式(Static Factory Method) 2、工厂方法模式(Factory Method)又叫做 多态性工厂模式(Polymorphic Factory) 3、抽象工厂模式(Abstract Factory)又叫做 工具...

    java设计模式CatalogDAOFactory是典型的工厂方法

    工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成...

    实例讲解PHP设计模式编程中的简单工厂模式

    简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。 1.工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例化...

    二十三种设计模式【PDF版】

    所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的灵魂),编程工作将变成一个让你时刻 体验创造快感的激动人心的过程. 为能和大家能共同探讨"设计模式",我将自己在学习中的心得...

    简单工厂经典原码

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单...

    PHP设计模式(2017年8月力作)

    Abstract Factory , Builder , Factory Method , Multiton , Pool , Prototype , Simple Factory , Singleton , Static Factory , Structural , Adapter / Wrapper , Bridge , Composite, Data Mapper , Decorator ,...

    java 面试题 总结

    28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static ...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问...

Global site tag (gtag.js) - Google Analytics