PHP之工厂方法模式微信H5三公棋牌源码出售
2018-03-13 17:14
381 查看
定义一个用于创建对象的接口微信H5三公棋牌源码出售 h5.super-mans.com 企娥:2012035031 vx和tel:17061863513 (抽象工厂类),让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到其子类(抽象工厂类的子类)。 工厂方法模式是简单工厂模式的进一步抽象和推广。在简单工厂模式中,当新增一个类时都需要改动一次工厂类方法。而工厂方法模式中将一个类的实例化延续到抽象工厂的子类,使得新增一个类时只需创建一个对应的工厂类即可。因此工厂方法模式符合开闭原则。![](https://images2018.cnblogs.com/blog/664798/201803/664798-20180313151642272-1951605682.png)
使用场景
工厂方法模式更适合需要创建一系列实例的场景。工厂方法模式的特点是将简单工厂模式的内部逻辑判断移到了客户端代码中进行,也就是工厂方法模式是通过在客户端决定实例化哪一个具体工厂来创建相应的实例。如这样一个场景:几个大学生学雷锋做好事,帮一个老人家做家务活。分别用简单工厂模式和工厂方法模式实现如下://简单工厂模式 $leiFengA = SimpleFactory->CreateLeiFeng('学雷锋的大学生'); $leiFengA->BuyRice(); $leiFengB = SimpleFactory->CreateLeiFeng('学雷锋的大学生'); $leiFengB->Sweep(); $leiFengC = SimpleFactory->CreateLeiFeng('学雷锋的大学生'); $leiFengC->Wash();
//工厂方法模式 $factory = new UndergraduateFactory(); $leiFengA = factory->CreateLeiFeng(); $leiFengA->BuyRice(); $leiFengB = factory->CreateLeiFeng(); $leiFengB->Sweep(); $leiFengC = factory->CreateLeiFeng(); $leiFengC->Wash();如果这时有个需求,由于大学生们毕业了各奔东西,没法再帮老人家做家务活了,需要由社区志愿者来代替他们做好事。那么修改上面客户端代码时,简单工厂模式需要将所有的“学雷锋的大学生”替换成社区志愿者。而工厂方法模式中,只需要将UndergraduateFactory()(学雷锋的大学生工厂)换成VolunteerFactory()(社区志愿者工厂)。
类图
![](https://images2018.cnblogs.com/blog/664798/201803/664798-20180313151642272-1951605682.png)
PHP代码示例
//雷锋类 class LeiFeng { public function sweep() { echo '扫地'; } public function wash() { echo '洗衣'; } public function buyRice() { echo '买米'; } }
//大学生 class Undergraduate extends LeiFeng { }
//社区志愿者 class Volunteer extends LeiFeng { }
//雷锋工厂类 abstract class LeiFengFactory { abstract public function createLeiFeng(); }
//学雷锋的大学生工厂类 class UndergraduateFactory extends LeiFengFactory { public function createLeiFeng() { return new Undergraduate(); } }
//社区志愿者工厂类 class VolunteerFactory extends LeiFengFactory { public function createLeiFeng() { return new Volunteer(); } }
//客户端 $factory = new UndergraduateFactory(); $leiFeng = $factory->createLeiFeng(); $leiFeng->sweep();
相关文章推荐
- 棋牌游戏服务器h5三公棋牌源码出售架构: 总体设计
- haproxy实现会话保持微信H5牛牛棋牌源码出售:stick table
- JeeSite 4.0 微信神兽大厅H5棋牌12牛牛源码搭建环境部署
- .NET微信h5三公源码项目结构搭建
- PHP微信h5棋牌搭建sprintf()函数的使用
- 关于PHP微信h5棋牌程序开发数据库的备份
- PHP微信h5棋牌开发socket
- 一步一步创建ASP.NET MVC5程序微信房卡三公棋牌平台出售
- Halcon一日一练:图像拼接技术微信牛牛棋牌源码出售:步骤与例程
- ASP.NET Core 一步步搭建个人网站微信H5房卡三公棋牌源码下载_Linux系统移植
- P2P结构与微信Quorum牛牛h5棋牌源码租售平台搭建机制
- 三公微信棋牌源码搭建
- PHP微信h5棋牌程序制作session共享方案梳理
- h5牛牛源码出售你的斗地主能拿多少炸?
- 微信H5页面源码如何看
- h5棋牌源码游戏页引起的思考
- Android通过外部浏览器调用微信H5支付,Android+PHP详解
- 微信h5牛牛源码搭建教程
- mybatis源码学习--注解五神兽棋牌源码出售方式为什么mybatis的dao接口不需要实现类
- [置顶] 全网独家V16A版-H5红包仿微信红包 牛牛 接龙 扫雷 多雷禁抢 微信登录封装APP赢率智能控制,2018全新源码内核升级打造