简单工厂设计模式,也就是静待工厂

场景,最近小米6很火啊,我也是小米的粉丝,就拿小米6来说,有黑色,白色,蓝色,三种非常亮的颜色。

先来代码,然后有疑惑,最后解释。

简单工厂设计模式有一个类是抽象类,是黑色,白色,蓝色手机的父类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * 小米手机抽象类
 
 * @author sdc
 *
 */
public abstract class XiaoMiProduction {
    /**
     * 生产小米6的方法
     */
    public abstract void createXiaoMi6();
     
}

蓝色手机生产类。

1
2
3
4
5
6
7
8
9
public class XiaoMi6Blue extends XiaoMiProduction{
    @Override
    public void createXiaoMi6() {
        // TODO Auto-generated method stub
        System.out.println("生产亮蓝版本小米6");
    }
}

白色手机生产类。

1
2
3
4
5
6
7
8
9
10
11
12
package com.test4;
public class XiaoMi6White extends XiaoMiProduction{
    @Override
    public void createXiaoMi6() {
        // TODO Auto-generated method stub
        System.out.println("生产亮白版本小米6");
    }
     
}

黑色手机生产类:

1
2
3
4
5
6
7
8
9
public class XiaoMi6Black extends XiaoMiProduction{
    @Override
    public void createXiaoMi6() {
        // TODO Auto-generated method stub
        System.out.println("生产亮黑版本小米6");
    }
}

工厂类产生,生产小米6的工厂类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
 * 生产小米6的工厂
 
 * @author sdc
 *
 */
public class XiaoMi6Factory {
    // 蓝色
    private static final String blule = "blue";
    // 黑色
    private static final String black = "black";
    // 白色
    private static final String white = "while";
    /**
     * 静态工厂方法
     * @param colour
     * @return
     */
    public static XiaoMiProduction createXiaoMi6(String colour) {
        XiaoMiProduction xmP = null;
        switch (colour) {
        case black:
            xmP = new XiaoMi6Black();
            break;
        case blule:
            xmP = new XiaoMi6Blue();
            break;
        case white:
            xmP = new XiaoMi6White();
            break;
        }
        return xmP;
    }
}

说明:

生产哪一种颜色的手机,有你给传入到工厂类里的参数决定的,这个静态方法会返回给你一个具体的生产类。用这个生产类来去调用具体的业务逻辑。

角色划分:

抽象产品角色:就是上文提到的XiaoMiProduction这个抽象类,是那父类,可以是接口也可以是抽象类。

具体产品角色:就是生产三种颜色的手机类,具体的业务逻辑。

工厂角色:就是XiaoMi6Factory这个类,作用就是生产具体的产品的类,里面提供一个静态方法,提供给外部调用。

本文转自 豆芽菜橙 51CTO博客,原文链接:http://blog.51cto.com/shangdc/1918849

java 谈设计模式之简单工厂相关推荐

  1. 1、从王者荣耀浅谈设计模式(简单工厂模式)

    姓名:简单工厂模式 英文名:factory method Pattern 价值观:容易扩展 王者荣耀的英雄一个个阶段性的上线,有射手.坦克.刺客等等,每个英雄的类型,技能,级别都不一样, 这里主要举个 ...

  2. Java设计模式之简单工厂模式(Simple Factory)

    [Java与模式]简单工厂模式(Simple Factory---吴义) 首先说明,Java与模式一系列的文章均是参考阎宏博士的<Java与模式>一书,加上自身的一些体会的探索,产生如下文 ...

  3. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  4. 设计模式之简单工厂模式(Java 实现)

    设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...

  5. .NET设计模式(1): 简单工厂模式

    .NET设计模式(1): 简单工厂模式 最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足.园子里其实关于此类文章已经很多了,如果d ...

  6. 大牧絮叨设计模式:简单工厂模式

    文章目录 1. 简单工厂模式概述 1.1.简单工厂模式核心组件 1.2.简单工厂模式优缺点 2.` Java`实现 公共父类定义 产品具体实现类 简单工厂定义 代码运行测试: 3. `Python`实 ...

  7. php的类图怎么生成_PHP设计模式之简单工厂模式

    PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...

  8. C#设计模式(2)——简单工厂模式

    一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂 ...

  9. JS常用的设计模式(2)——简单工厂模式

    JS常用的设计模式(2)--简单工厂模式 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定 ...

最新文章

  1. 学好机器学习必备这12条经验 !(附资料)
  2. sql server密钥
  3. Android studio官网资料
  4. linux touch命令 新建文件 更新文件时间
  5. 强化学习5——价值函数近似(VFA)
  6. [转]我们为什么要用vue,他解决了什么问题,如何使用它?
  7. Android笔记 fragment入门 静态加载fragment
  8. Spring Boot 导出Excel表格
  9. powermockito测试私有方法_使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十)在项目中准备测试环境...
  10. 基于 WebRTC 构建 Web SIP Phone
  11. 使用Rational Quality Manager 4.0.1更有效地管理测试数据
  12. android 取消蓝牙配对框 实现自动配对,android 取消蓝牙配对框 实现自动配对
  13. 如何用ssh隧道绕过防火墙
  14. oracle实现explode,炸裂函数explode
  15. 程序员面试必备软技能,值得收藏!
  16. DatePicker选择日期报错clone.weekday is not a function
  17. MyBatis - 批量插入
  18. 【ZJOJ 5454】【NOIP2017提高A组冲刺11.5】仔细的检查
  19. C语言正确的输入格式和输入方式
  20. C# Interlocked类的事例

热门文章

  1. 20年前的程序员什么样?从版主到架构大牛的成长之路
  2. 云HBase发布全文索引服务,轻松应对复杂查询
  3. 从Promise来看JavaScript中的Event Loop、Tasks和Microtasks
  4. 用 Heapster 监控集群 - 每天5分钟玩转 Docker 容器技术(176)
  5. 【vuejs深入三】vue源码解析之二 htmlParse解析器的实现
  6. Highcharts X轴纵向显示
  7. volatile关键字的作用、原理
  8. ubuntu数据库安装配置
  9. 染色[SDOI2011]
  10. 洛谷P1182 数列分段Section II 二分答案