简单工厂(Simple Factory)
  又叫静态工厂,是工厂模式三中状态中结构最为简单的。
1.主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。
2.或者针对每个产品,写一个对应的生产该产品的方法

代码解释:

1.创建2个产品:android手机、Apple手机

public class Android implements Product{

    public Android() {
System.out.println("生产一个Android手机...");
}
}
public class Apple implements Product{

    public Apple() {
System.out.println("生产一个Apple手机...");
}
}

2.创建产品生产工厂

public class SimpleFactory {

    /**
* 简单工厂,生产一个苹果手机
*/
public Product processApple(){
return new Apple();
} /**
* 简单工厂,生产一个苹果手机
*/
public Product processAndroid(){
return new Android();
}
}

  产品工厂也可以这样写:

public class SimpleFactory2 {

    /**
* 简单工厂,生产一个产品
* @return
*/
public static Product processProduct(String name){
if(name.equals("apple")){
return new Apple();
}else if(name.equals("android")){
return new Android();
}else{
System.out.println("没有该产品");
return null;
}
}
}

3.客户端访问(Test测试)

SimpleFactory factory = new SimpleFactory();

        //如果用户想要一个Apple手机
Product apple = factory.processApple();
//如果用户想要一个Android手机
Product android = factory.processAndroid();

  若为第二种静态工厂形式:

-----------------添加参数的工厂---------------------
//生产一个android手机
SimpleFactory2.processProduct("android");

缺陷:
 首先,我们每次想要增加一种新产品的时候,都必须修改SimpleFactory的原代码。
 其次,当我们拥有很多很多产品的时候,而且产品之间又存在复杂的层次关系的时候, 这个类必须拥有复杂的逻辑判断能力:

  if(A) ---> 生产A产品

  else if(B) ---> 生产B产品

  else... ---> 生产...

或写很多对应的生产该产品的方法:

  public void processA()...

  public void processB()...

  ...

其代码量也将不断地激增,这对以后的维护简直就是恐怖两个字...
 还有就是,整个系统都严重依赖SimpleFactory类,只要SimpleFactory类一出问题, 系统就进入不能工作的状态,这也是最为致命的一点....

---> 

factory工厂模式之简单工厂SimpleFactory的更多相关文章

  1. Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式

    工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...

  2. Java学习笔记——Java工厂模式之简单工厂

    package com.app; import java.util.Date; /* * 工厂模式:简单工厂.工厂方法.抽象工厂 * * */ public class Test0718_Factor ...

  3. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂

    简单工厂:工厂依据传进的参数创建相应的产品. http://www.cnblogs.com/DelphiDesignPatterns/archive/2009/07/24/1530536.html { ...

  4. Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

  5. 设计模式之工厂模式之简单工厂(php实现)

    github源码地址: git@github.com:ZQCard/design_pattern.git 1.简单工厂模式 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的 ...

  6. 【LabVIEW技巧】工厂模式_简单工厂

    前言 上一个文章介绍了如何学习LabVIEW OOP,简要的提及了一些OOP学习中注意的事项,许多文章的读者反映写的太范,后文会逐步缩小范围,讨论在LabVIEW中各个模式的应用. 工厂模式概述 工厂 ...

  7. JAVA 工厂模式:简单工厂

    简单工厂模式(SimpleFactory Pattern): 又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工厂模式中,可以根据参数的不同返回不同类的 ...

  8. 工厂模式vs简单工厂

    前言 工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断 ...

  9. Objective-C 工厂模式(上) -- 简单工厂模式

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

随机推荐

  1. 一小时学会Markdown写作

    写作也是创作一件产品.以易懂.简洁.凝练的方式表达观点.阐述见解和知识,发挥影响力. 为什么要使用 Markdown 博文迁移的排版兼容.当在多个博客之间,或者在线博客与本地笔记软件之间迁移的时候,排 ...

  2. stc89c52开发板遥控器解码 红外线发射 内置 eeprom 存储 串口显示编码

    单片机,大概三年前,就买了一本 <爱上单片机> 最后就学会,用面包板了,编程书上基本没讲. 看原理图,看时序图,看数据手册, 都没讲. 而且书上自带的代码写的很烂. 1,缩近控制不好 2, ...

  3. Serializable 序列化

    序列化是指将对象实例的状态存储到存储媒体的过程.在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流.在随后对对象进行反序列化时,将创建出与 ...

  4. redis监控状态

    Redis介绍 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表.哈希.集合和有序集合5种.支持在服务器端计算集合 ...

  5. std的find和reverse_iterator联合使用

    上代码: // test2013.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h> #in ...

  6. HDU 4035:Maze(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4035 Maze Special Judge Problem Description   When w ...

  7. Serializable接口使用纪实

    这两天依领导要求使用sonar工具测试了一下项目代码,其中有一个问题是 而这个类的结构大概是这样的: public class Demo<T> implements Serializabl ...

  8. 八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  9. 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind

    最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind 最小支撑树树 前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小 ...

  10. Wall(凸包POJ 1113)

    Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 32360 Accepted: 10969 Description On ...