简单工厂模式

原创 2015年07月08日 10:34:07

文章是看了网上《设计模式之禅》第二版的,和网上其他文章写出来的。
简单工厂模式的类图:
这里写图片描述

抽象产品类
可以是抽象类 可以是接口,主要看需求是用接口 还是用抽象类。
因为我们重点制造出不同肤色的人,所以我们需要一个接口或者抽象类来被他们实现或者继承。
Human(抽象产品类) 可以是接口或者抽象类

//Human.java
public interface Human {
    void getColor();
    void talk();
}

具体产品类
具体产品类这里是黑人,黄种人,白种人。代码实现如下:

//BlackHuman.java
public class BlackHuman implements Human {
    @Override
    public void getColor() {
        System.out.println("黑种人黑色皮肤");
    }

    @Override
    public void talk() {
        System.out.println("说的是单字节语言");
    }
}
//YellowHuman.java
public class YellowHuman implements Human {
    @Override
    public void getColor() {
        System.out.println("黄种人黄色皮肤");
    }
    @Override
    public void talk() {
        System.out.println("黄种人说的是双字节语言");
    }
}
//WhiteHuman.java
public class WhiteHuman implements Human {
    @Override
    public void getColor() {
        System.out.println("白人是白色皮肤");
    }
    @Override
    public void talk() {
        System.out.println("白人说的是单字节语言");
    }
}

工厂类
负责生成产品对象的。在这里,工厂类是HumanFactory,这里用到了静态方法生产产品,确切来说,这是一个 简单静态工厂模式。
简单工厂模式是通过 switch case (或者if elseif)来写分支的。这就是工厂模式的最大区别之处。

//HumanFactory.java
public class HumanFactory {
    public static Human createHuman(int type){
        Human human = null;
        switch (type) {
        case 1:
            human = new WhiteHuman();
            break;
        case 2:
            human = new BlackHuman();
            break;
        case 3:
            human = new YellowHuman();
            break;
        }
        return human;
    }
}

客户
这里客户是女娲.

public class Nvwa {
    public static void main(String[] args) {
        System.out.println("--早出的第一批人是白色人种--");
        Human whiteHuman = HumanFactory.createHuman(1);
        whiteHuman.getColor();
        whiteHuman.talk();

        System.out.println("--第二次 是黑色人种--");
        Human blackHuman = HumanFactory.createHuman(2);
        blackHuman.getColor();
        blackHuman.talk();

        System.out.println("--最后 是黄色人种--");
        Human yellowHuman = HumanFactory.createHuman(3);
        yellowHuman.getColor();
        yellowHuman.talk();

    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

java工厂模式——简单工厂模式

当A对象需要调用B对象的方法是,许多初学者会选择使用new关键字来创建一个B实例,然后调用B实例的方法。从语法角度来看,这种做法没有任何问题,这种做法的坏处在于:A类的方法实现直接调用了B类的类名(这...
  • huang_xw
  • huang_xw
  • 2012年06月16日 16:31
  • 5895

C++ 设计模式之——简单工厂模式(SimpleFactoryPattern)

简单工厂模式   简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建...
  • nie2314550441
  • nie2314550441
  • 2016年02月18日 17:40
  • 412

C# 简单工厂设计模式

简单工厂设计模式: C#- 简单工厂模式   一、   简单工厂( Simple Factory )模式   Simple Fa...
  • u013799020
  • u013799020
  • 2014年06月24日 00:39
  • 430

工厂方法模式VS简单工厂模式

One----简单工厂模式: 一,基本知识: (1)定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。(2)理...
  • qq_28055429
  • qq_28055429
  • 2016年06月10日 23:14
  • 1539

简单工厂模式(C++描述)

一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。 1.静态工厂方法统一管理对象...
  • chollima
  • chollima
  • 2009年03月12日 22:43
  • 17045

javascript设计模式--简单工厂模式

简单工厂模式(simple Factory):又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。 举个例子,比如说体育商品店卖体育器材,里面有很多体育用品,及其...
  • sinat_29843547
  • sinat_29843547
  • 2016年04月12日 10:47
  • 588

简单工厂模式的java实现例子

简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。 它的实现方式是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 简单工厂模式由三种角色组成: ...
  • pnjlc
  • pnjlc
  • 2016年09月26日 16:29
  • 1651

java 简单工厂模式(实现一个计算器)

package com.simpleFactory; /** * 运算类 * @author Administrator * */ public class Operation { ...
  • greatmind829
  • greatmind829
  • 2012年06月29日 16:37
  • 4285

简单工厂模式的UML类图与源码实现

原文:http://hlzhou.iteye.com/blog/551492 源码:Operation类 Java代码   package O...
  • lan861698789
  • lan861698789
  • 2014年02月28日 21:03
  • 2345

简单工厂模式(思想)

简单工厂模式解释:         简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern...
  • x_zhaohu
  • x_zhaohu
  • 2016年04月09日 22:46
  • 585
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单工厂模式
举报原因:
原因补充:

(最多只允许输入30个字)