简单工厂模式

原创 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();

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

相关文章推荐

简单工厂模式

  • 2017年08月16日 20:07
  • 60.84MB
  • 下载

简单工厂模式的C++、Java实现

  • 2017年02月04日 18:05
  • 21.84MB
  • 下载

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

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

Calculator(简单工厂模式)

  • 2014年04月04日 12:37
  • 550KB
  • 下载

简单工厂模式(计算器)

  • 2014年07月11日 16:57
  • 31KB
  • 下载

简单工厂模式(SimpleFactoryPattern)

将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,实现了解耦。package study.lee.com.ope...

简单工厂模式学习代码

  • 2013年03月17日 17:09
  • 2KB
  • 下载

简单工厂模式demo

  • 2017年06月27日 09:40
  • 10KB
  • 下载

简单工厂模式(python版)

这篇文章主要介绍了python设计模式之简单工厂模式实例,工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品,需要的朋友可以参考下...

简单工厂模式

  • 2012年09月27日 10:18
  • 3.2MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单工厂模式
举报原因:
原因补充:

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