捷普vip网-工作不仅仅只是为了生活!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1299|回复: 31

php设计模式(3)工厂模式之简单工厂模式

[复制链接]

94

主题

187

帖子

414

积分

中级会员

Rank: 3Rank: 3

积分
414

最佳新人活跃会员社区QQ达人

发表于 2017-9-20 19:01:21 | 显示全部楼层 |阅读模式
题外话:勤于思考,善于分享,每天进步一点,感谢关注、分享、点赞和评论。你们的鼓励是我创作的动力!
前言:

上一节我们总体讨论了工厂模式,这一节我们讨论一下工厂模式中的最简单模式——简单工厂模式。
内容概要:

1、什么是简单工厂模式
2、怎么实现简单工厂模式
3、示例代码
dTNxXN05nj8a00Xs.jpg
一、什么是简单工厂模式

简单工厂模式是一种入门级的设计模式,在php实际开发中还是会经常用到的。
简单点说,简单工厂模式就是把你创建对象的过程封装起来。在php里,原先你直接使用new实例化一个对象,在简单工厂模式里间接使用。
问题又来了,啥叫“间接使用”?往下看。
二、如何实现简单工厂模式

我们都知道,php类里有一种静态方法,可以使用 ClassName::staticFunction()的方式调用。
如果我们在staticFunction()中使用new的方法创建一个对象A,并且return出来。这样,我们就可以使用ClassName::staticFunction()这种方法来调用A了。这就是对new的间接使用。
再进一步说,我们可以这样定义静态方法,staticFunction($class),并且在这个方法中采用new $class()的方式创建一个对象。
也就是说,我们允许静态方法调用者自己决定创建哪一个类的对象。这样就实现了将创建对象的过程封装起来的目的。
先说我们的例子要实现啥功能,书接上回,我们以冰激凌工厂作为例子。
这里假设有工厂有两个车间,牛奶味生产车间和苹果味生产车间。
三、示例代码

按道理说,在实际使用简单工厂模式的时候,都是一个类对应一个php文件,这里我犯懒一下,都写在一个php文件里,否则还需要建立多个文件,还得使用命名空间,您看的费劲,我说的也费劲,既然是实例代码,我们从简一下哈。
fC93YNv8WCw938g8.jpg
需要说明一下:
1、代码写的不严谨,该判断没判断,并且该注释的没注释。示例而已。
2、实际上,牛奶冰激凌和苹果冰激凌一般要继承一个接口,并且该接口规定要实现哪些方法。
3、下次要增加一个其他味道的冰激凌,只需要创建一个类似MilkIceCream的类(类文件)就行了,其他代码不需要动。
补充一下完整版代码,请大家指正哈:
tPgor1mcFmGcMrOF.jpg
欢迎关注【php在路上】每天进步一点。
码字不容易,尊重版权,头条首发,转载请注明出处:头条号|PHP在路上
回复

使用道具 举报

24

主题

221

帖子

476

积分

中级会员

Rank: 3Rank: 3

积分
476

最佳新人活跃会员热心会员推广达人社区QQ达人

发表于 2017-9-20 19:01:48 | 显示全部楼层
讲的很清楚,帮顶
回复 支持 反对

使用道具 举报

114

主题

212

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448

社区QQ达人

发表于 2017-9-20 19:17:29 | 显示全部楼层
已经关注,对你模式感兴趣
回复 支持 反对

使用道具 举报

54

主题

227

帖子

460

积分

中级会员

Rank: 3Rank: 3

积分
460

最佳新人活跃会员热心会员推广达人社区QQ达人

发表于 2017-9-20 19:33:34 | 显示全部楼层
感谢。给初学者,讲的很明白
回复 支持 反对

使用道具 举报

37

主题

210

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
发表于 2017-9-20 19:48:35 | 显示全部楼层
非常棒,感谢楼主分享
回复 支持 反对

使用道具 举报

20

主题

222

帖子

462

积分

中级会员

Rank: 3Rank: 3

积分
462
发表于 2017-9-20 20:04:36 | 显示全部楼层
简单工厂模式可以这么理解 //@小白码: 就是用一个类的静态方法把其他有关系的类实例化封装起来
回复 支持 反对

使用道具 举报

47

主题

207

帖子

442

积分

中级会员

Rank: 3Rank: 3

积分
442

最佳新人活跃会员

发表于 2017-9-20 20:19:57 | 显示全部楼层
就是用一个类的静态方法把其他有关系的类实例化封装起来
回复 支持 反对

使用道具 举报

31

主题

240

帖子

504

积分

高级会员

Rank: 4

积分
504
发表于 2017-9-20 20:34:51 | 显示全部楼层
感谢关注,目前已经写到抽象工厂模式了,请指正//@大女乃兔白米唐: 已经关注,对你模式感兴趣
回复 支持 反对

使用道具 举报

0

主题

551

帖子

1112

积分

金牌会员

Rank: 6Rank: 6

积分
1112

最佳新人活跃会员

发表于 2017-10-23 12:21:13 | 显示全部楼层
非常好,顶一下
回复 支持 反对

使用道具 举报

0

主题

581

帖子

1172

积分

金牌会员

Rank: 6Rank: 6

积分
1172

最佳新人活跃会员

发表于 2017-12-13 21:41:00 | 显示全部楼层
成都捷普的路过
回复 支持 反对

使用道具 举报

0

主题

558

帖子

1126

积分

金牌会员

Rank: 6Rank: 6

积分
1126

最佳新人活跃会员

发表于 2018-1-29 18:19:49 | 显示全部楼层
顶起出售广告位
回复 支持 反对

使用道具 举报

0

主题

515

帖子

1040

积分

金牌会员

Rank: 6Rank: 6

积分
1040

最佳新人活跃会员

发表于 2018-3-16 12:02:36 来自手机 | 显示全部楼层
路过 帮顶 嘿嘿
回复 支持 反对

使用道具 举报

0

主题

575

帖子

1160

积分

金牌会员

Rank: 6Rank: 6

积分
1160

最佳新人活跃会员

发表于 2018-4-3 16:50:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

544

帖子

1098

积分

金牌会员

Rank: 6Rank: 6

积分
1098

最佳新人活跃会员

发表于 2018-4-13 09:00:12 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

531

帖子

1072

积分

金牌会员

Rank: 6Rank: 6

积分
1072

最佳新人活跃会员

发表于 2018-4-15 16:35:26 | 显示全部楼层
我也是坐沙发的
回复 支持 反对

使用道具 举报

0

主题

539

帖子

1088

积分

金牌会员

Rank: 6Rank: 6

积分
1088

最佳新人活跃会员

发表于 2018-4-24 12:44:22 来自手机 | 显示全部楼层
支持你哈...................................
回复 支持 反对

使用道具 举报

0

主题

564

帖子

1138

积分

金牌会员

Rank: 6Rank: 6

积分
1138

最佳新人活跃会员

发表于 2018-5-2 21:01:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

561

帖子

1132

积分

金牌会员

Rank: 6Rank: 6

积分
1132

最佳新人活跃会员

发表于 2018-5-8 08:58:28 来自手机 | 显示全部楼层
我也是坐沙发的
回复 支持 反对

使用道具 举报

0

主题

535

帖子

1080

积分

金牌会员

Rank: 6Rank: 6

积分
1080

最佳新人活跃会员

发表于 2018-6-12 06:22:45 来自手机 | 显示全部楼层
传说中的沙发???哇卡卡
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|捷普vip网 ( 蜀ICP备15003975号-1

GMT+8, 2018-11-17 08:32 , Processed in 0.531250 second(s), 74 queries .

Powered by X3.2 © 2014-2016 &

快速回复 返回顶部 返回列表