前言:
在解说工厂模式之前,先唠一唠。
在莫兰蒂台风第五天后,厦门市民的生活终于基本恢复正常,然而给厦门带来的伤害,仍在延续(35万棵树受灾,厦门行)
上一次说要做的一件事,终于是去做了(9月16日申请了个微信公众号,发了篇文章号召大家救树,链接如下)
http://mp.weixin.qq.com/s?__biz=MzI3NzQ2NTIxMQ==&mid=2247483662&idx=1&sn=322db17aac12e1bdb5d9685f918fb32f&scene=0#wechat_redirect


OK,以下是正题
工厂模式,属于设计模式中的创建类型,见名知意,就如同工厂的产品一样,将共性抽象出来成一个产品父类,各子类继承(或实现)父类,在需要创建一个具体的子类产品时,并不直接通过new的方式,而是构造一个Factory工厂类,由传入的产品要求(参数)去创建具体的产品子类。

开始代码:
今天的例子是以手机为例
所以,主要的java类就是,PhoneFactory类(工厂),Phone类(父类),以及子类(ApplePhone/SamsungPhone/XiaomiPhone);


首先是创建一个工厂类 , 主要的方法是CreatePhone

//手机工厂类
public class PhoneFactory {// 定义手机类型public static final String Phone_Apple = "Apple";public static final String Phone_Samsung = "Sumsang";public static final String Phone_Xiaomi = "Xiaomi";// 根据不同的手机类型做判断,生产不同的手机public static Phone CreatPhone(String phone_type) {switch (phone_type) {case Phone_Apple:return new ApplePhone();case Phone_Samsung:return new SamsungPhone();case Phone_Xiaomi:return new XiaomiPhone();default:System.out.println("我们工厂不生产这种手机型号");return null;}}
}

其次是具有产品共性的,手机父类Phone
可以是抽象类,也可以是一个接口,定义行为就好(这里的行为是,开机、功能、关机)

//抽象父类,默认统一了开机和关机的行为,子类继承这两个行为
public abstract class Phone {public void open() {System.out.println("开机,准备干活");}public abstract void function();public void close() {System.out.println("收工,关机了");}
}

最后是产品子类(这里构造了三类产品),苹果手机、三星手机、小米手机

//苹果手机
public class ApplePhone extends Phone {@Overridepublic void function() {System.out.println("苹果手机,我的特色功能是IPHONE7防水");}
}
//三星手机
public class SamsungPhone extends Phone {@Overridepublic void function() {System.out.println("三星手机,我的特色功能是Note7爆炸");}}
//小米手机
public class XiaomiPhone extends Phone{@Overridepublic void function() {System.out.println("小米手机,我的特色功能是MIUI8手机分身");}}

这样,一个工厂,以及产品线就定义好了。
来测试一下吧

//测试类public class Test {public static void main(String[] args) {Phone phone1 = PhoneFactory.CreatPhone("Apple");Phone phone2 = PhoneFactory.CreatPhone("Samsung");Phone phone3 = PhoneFactory.CreatPhone("Xiaomi");phone1.open();phone1.function();phone1.close();phone2.open();phone2.function();phone2.close();phone3.open();phone3.function();phone3.close();}
}

通过工厂创建了三个phone,传入的参数分别是“Apple”、“Samsung” 、”Xiaomi”,
控制台输出结果如下

开机,准备干活
苹果手机,我的特色功能是IPHONE7防水
收工,关机了开机,准备干活
三星手机,我的特色功能是Note7爆炸
收工,关机了开机,准备干活
小米手机,我的特色功能是MIUI8手机分身
收工,关机了

Ok ,简单工厂模式到此为止。
工厂模式还有抽象工厂模式等,不仅仅局限于一类产品,可以构造出不同的产品系列,小伙伴们可以再去挖掘巩固哦


献上源码
http://download.csdn.net/detail/lebang08/9633882

简单工厂模式——2016手机也疯狂相关推荐

  1. JAVA工厂模式优缺点_简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

    各位小伙伴好,今天给大家主要介绍一下简单工厂模式.工厂模式和抽象工厂模式的区别及各自的优缺点. (本文实现语言为Python3) [前言] 众所周知今天所讲的内容是 设计模式的一类:对于设计模式这个概 ...

  2. 简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

    各位小伙伴好,今天给大家主要介绍一下简单工厂模式.工厂模式和抽象工厂模式的区别及各自的优缺点. (本文实现语言为Python3) [前言] 众所周知今天所讲的内容是设计模式的一类:对于设计模式这个概念 ...

  3. java 父类转子类_Java多态,对象转型,和简单工厂模式。希望对您有帮助!

    各位读者老爷们大家好鸭~图图又来了,今天我们要说一下"多态". 怎么理解这两个字呢?可以理解为同一个引用对象的不同表现形态,即将父类的引用指向子类的对象.这是比较官方的书面解释,大 ...

  4. C#设计模式--简单工厂模式

    设计模式: 简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,下面简单举例说明: 简单工厂 ...

  5. 大话设计模式(五 体会简单工厂模式的美妙)

    (续上篇) 次日,小菜再来找大鸟,问道:"你昨天说计算器这样的小程序还可以用到面向对象三大特性?继承和多态怎么可能用得上,我实在不可理解."         大鸟:"小菜 ...

  6. 手撕设计模式之「简单工厂模式」(Java描述)

    前言 利用简单工厂模式可以实现对象创建和业务逻辑处理的分离,但存在工厂类职责过重,增添新产品违背开闭原则等问题.它不属于GoF 23种设计模式之一,但是它可以作为学习工厂方法模式前的一个很好的引导. ...

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

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

  8. 【设计模式 01】简单工厂模式(Simple factory pattern)

    简单工厂模式 可以根据参数的不同返回不同类的实例 参考: CSDN|简单工厂模式 简单工厂通过传给工厂类的参数的不同,返回不同的对象,包括三部分组成: 具体的"产品" 工厂类(实例 ...

  9. python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点

    前言 在<设计模式>一书中工厂模式提到了: 工厂方法模式(Factory Method) 抽象工厂模式 (Abstract Factory) 但是在实际过程中还有一种工厂模式经常被使用,那 ...

最新文章

  1. PostgreSQL 打开文件句柄优化 - 百万以上实体对象初始化优化
  2. library at girton
  3. PHP与C sharp互解加密算法
  4. 提升沟通效率52%  阿里政务钉钉助力政府数字化转型
  5. 指令重排序所带来的问题及使用volatile关键字解决问题
  6. ES6新特性_ES6生成器函数的参数传递---JavaScript_ECMAScript_ES6-ES11新特性工作笔记021
  7. 文本居于图片左侧html,CSS实现图片与文本的居中对齐的常见方式
  8. Lucene使用与优化(转)
  9. bootstrap带图标的按钮与图标做连接
  10. godaddy 安装 ssl
  11. FTP 文件上传跟下载
  12. 2021十大进销存软件排名
  13. Java链表-合并两个有序链表
  14. mdx 医学词典_Mdict的mdx词典文件如何解析,有相关的开源代码可以参考吗?
  15. DbgPrint输出 格式 %ws %wZ %p
  16. 基于融云的即时通讯开发(一)
  17. 《Excel数据可视化:一样的数据不一样的图表》——导读
  18. 二分算法。yxc教的
  19. Doxygen内部结构
  20. 抖音自动生成文字_抖音视频怎么加文字

热门文章

  1. python isinstance()_python isinstance() 函数
  2. 电脑固态硬盘可以装几个呢
  3. 初学者用html制作的发射爱心
  4. 高清的GIF表情包如何制作 1
  5. kubernetes系列二:概念梳理
  6. qtcanpool 知 04:主题之争
  7. 算法工程师从此不加班!3.4K Star可视化神器来啦
  8. 谷粒商城-后台管理系统
  9. r7 4800u和r7 5800u差距大不大
  10. 京东开普勒导购模式代码分享[java]