简单工厂模式——2016手机也疯狂

news/2024/11/24 9:43:11/

前言:
在解说工厂模式之前,先唠一唠。
在莫兰蒂台风第五天后,厦门市民的生活终于基本恢复正常,然而给厦门带来的伤害,仍在延续(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


http://www.ppmy.cn/news/368073.html

相关文章

Python网络爬虫使用教程

文章目录 一、URL资源抓取1.urllib2.requests3.requests-html二、正则表达式三、数据解析1.Beautiful Soup2.lxml3.selectolax四、自动化爬虫selenium五、爬虫框架1.Scrapy2.pyspider框架六、模拟登录与验证码识别七、autoscraper(不需要编程基础) 一、U…

手机web端资源整合

手机移动端WEB资源整合 2015-12-08 分类&#xff1a;前端开发 阅读(13687) meta基础知识 H5页面窗口自动调整到设备宽度&#xff0c;并禁止用户缩放页面 <meta name"viewport" content"widthdevice-width,initial-scale1.0,minimum-scale1.0,maximum-sc…

一些以前的QQ签名

大学四年也没买什么书&#xff0c;大四第二学期一次性买了几百块书&#xff0c;当时大家都找工作&#xff0c;我真的闲得太无聊了。舍友为证。 看新闻联播&#xff0c;资本主义国家活不下去了&#xff1b;看微博&#xff0c;中国也活不下去了。移民火星吧。 今天遇到一个数据…

QQ记录

用户:248541378(红树叶) 消息组:陌生人(50)消息类型:交谈记录 --------------------------------------------------消息对象:57177188(华南虎)--------------------------------------------------2004-10-15 13:39:15 57177188人的一辈子有很多事是无法忘怀的 2004-10-15…

08-CSS-移动WEB开发之流式布局

一、移动端基础 1.1 浏览器现状 PC端常见浏览器 360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见浏览器 UC浏览器&#xff0c;QQ浏览器&#xff0c;欧朋浏览器&#xff0c;百度手机浏览器&#xff0c;360安全浏览器&#xff0c;谷…

我公司供应手机物料如下

手机IC:我公司供应手机物料如下&#xff1a;一、手机套片&#xff08;MTK方案主芯片&#xff09;MT6226B/M套片 MTKMT6223A套片 MTKMT6223C套片 MTKMT6225套片 MTKSPANSION手机FLASH系列&#xff1a;S71PL032J04BAW0B0, 90-100K, SPANSION 324M HK STOCKS71PL032J08BFW0B0&…

安卓某Q协议分析

直接进入主题 主要数据包 /* renamed from: oicq.wlogin_sdk.request.l */ 抓包数据分析 //oicq.wlogin_sdk.request.request_TGTGT 这个类 tlv18 包数据: 00180016000100000600000000100000000000bc614e00000000 0018 //类型标识为18&#xff0c;24的16进制 固定 0016 …

三星Android p 卡,购买经历 篇二:三星S10 半个月使用心得

购买经历 篇二&#xff1a;三星S10 半个月使用心得 2019-06-18 10:03:08 0点赞 0收藏 0评论 结论 这是一部让人难以割舍的手机&#xff0c;我想拥有也想放弃。 我之前一直是苹果全家桶用户&#xff0c;用的是7P。想换安卓主要是因为对ios的使用疲劳。在7P之前我用的是三星S8&am…