简单工厂模式——2016手机也疯狂
2016-09-19 16:26
211 查看
前言:
在解说工厂模式之前,先唠一唠。
在莫兰蒂台风第五天后,厦门市民的生活终于基本恢复正常,然而给厦门带来的伤害,仍在延续(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
其次是具有产品共性的,手机父类Phone
可以是抽象类,也可以是一个接口,定义行为就好(这里的行为是,开机、功能、关机)
最后是产品子类(这里构造了三类产品),苹果手机、三星手机、小米手机
这样,一个工厂,以及产品线就定义好了。
来测试一下吧
通过工厂创建了三个phone,传入的参数分别是“Apple”、“Samsung” 、”Xiaomi”,
控制台输出结果如下
Ok ,简单工厂模式到此为止。
工厂模式还有抽象工厂模式等,不仅仅局限于一类产品,可以构造出不同的产品系列,小伙伴们可以再去挖掘巩固哦
献上源码
http://download.csdn.net/detail/lebang08/9633882
在解说工厂模式之前,先唠一唠。
在莫兰蒂台风第五天后,厦门市民的生活终于基本恢复正常,然而给厦门带来的伤害,仍在延续(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 { @Override public void function() { System.out.println("苹果手机,我的特色功能是IPHONE7防水"); } }
//三星手机 public class SamsungPhone extends Phone { @Override public void function() { System.out.println("三星手机,我的特色功能是Note7爆炸"); } }
//小米手机 public class XiaomiPhone extends Phone{ @Override public 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
相关文章推荐
- 设计模式之-简单工厂、工厂方法、抽象工厂
- Dot Net 设计模式—简单工厂
- 简单工厂设计模式-设计模式(1)
- 单态模式(Singleton)简单工厂(Simple Factory)
- JAVA设计模式——简单工厂(Simple Factory)模式
- 简单工厂创立性模式介绍
- 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
- 阎宏:Java语言简单工厂创立性模式介绍
- 简单的工厂模式
- 小菜编程成长记(五 体会简单工厂模式的美妙)
- (4)简单工厂模式 — Simple Factory — 文物管理衙门 — 和申的经营之道第一部分
- C#设计模式之简单工厂篇
- 爪哇语言简单工厂创立性模式介绍
- 简单工厂设计模式-设计模式(1)
- 简单工厂模式(Simple Factory Pattern)
- 爪哇语言简单工厂创立性模式介绍
- zt:工厂模式-简单工厂(设计模式的入门级模式—初级)
- C#设计模式学习笔记---简单工厂模式
- 解析Petshop 3.0 简单工厂(Simple Factory)模式
- 简单工厂(Simple Factory)模式