php工厂模式使用场景
场景:使用工厂模式接入:阿里短信验证、腾讯短信验证、百度短信验证
创建类文件
BaseSMS.php
– 基础短信服务接口类AliSMS.php
– 阿里短信服务类BaiduSMS.php
– 百度短信服务类TencentSMS.php
– 腾讯短信服务类SmsBusiness.php
– 短信业务逻辑类
具体代码
BaseSMS.php
– 基础短信服务接口类
interface BaseSMS
{public static function sendCode($phone, $code);
}
AliSMS.php
– 阿里短信服务类
class AliSMS implements BaseSMS
{public static function sendCode($phone, $code){// 这里是阿里云短信服务代码// XXXXXXXXXXXXXXXXXXXXXreturn '阿里云短信验证码发送成功';}
}
BaiduSMS.php
– 百度短信服务类
class BaiduSMS implements BaseSMS
{public static function sendCode($phone, $code){// 这里是百度云短信服务代码// XXXXXXXXXXXXXXXXXXXXXreturn '百度云短信验证码发送成功';}
}
TencentSMS.php
– 腾讯短信服务类
class TencentSMS implements BaseSMS
{public static function sendCode($phone, $code){// 这里是腾讯云短信服务代码// XXXXXXXXXXXXXXXXXXXXXreturn '腾讯云短信验证码发送成功';}
}
SmsBusiness.php
– 短信业务逻辑类
class SmsBusiness
{public static function sendCode($phone, $len = 4, $type){// 生成短信验证码$code = mt_rand(1000,9999); // 默认为4位数验证码if ($len == 6){ // 长度为6,则生成6位数验证码$code = mt_rand(100000,999999);}// 工厂模式创建不同的短信服务商$smsObj = null;switch($type){case 'ali':$smsObj = new AliSMS();break;case 'baidu':$smsObj = new BaiduSMS();break;case 'tencent':$smsObj = new TencentSMS();break;}$sms = $smsObj::sendCode($phone, $code);if ($sms) {// 成功:把短信验证码记录到 redis, 并且设置失效时间cache(config('stores.redis.prefix') . $phone, $code, config('stores.redis.expire'));}return true;}
}
最后,控制器调用 业务逻辑层短信发送验证码服务
class SMSController {public function code (){$phone = request()->param('phone_number', '', 'trim');/** 这里是参数验证,略*/// 调用业务逻辑层的sendCodeif (SmsBusiness::sendCode($phoneNumber, config('code.code.length'), 'ali')){return show(config('status.success'), '验证码发送成功');}return show(config('status.error'), '验证码发送失败');}
}
------- THE END -------
php工厂模式使用场景相关推荐
- php 工厂模式 使用场景,PHP设计模式之工厂模式
序言 每一种模式都有它的定义,它的使用场景.我们从实际当中进行学习并且在相应额场景可以运用.所谓的设计模式只是一种思想,并不存在是有固定的代码.学会了思想并且对应上使用的场景,慢慢而言在开发之中这也就 ...
- 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)
简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1 场景问题 ...
- java 工厂模式_软件设计工厂模式使用场景介绍及java举例(附源码)
工厂模式是软件设计中最常用也最常见的一种模式,这里通过一个例子来说明其功能. 问题背景 用户需求:请提供 1).图形绘制功能,当前可绘制当前可绘制原型.方形.三角形.未来可能需要支持绘制菱形.梯形等形 ...
- 【设计模式】抽象工厂模式 ( 简介 | 适用场景 | 优缺点 | 产品等级结构和产品族 | 代码示例 )
文章目录 一.抽象工厂模式简介 二.抽象工厂模式适用场景 三.抽象工厂模式优缺点 四.产品等级结构和产品族 五.抽象工厂模式代码示例 1.冰箱抽象类 2.美的冰箱实现类 3.格力冰箱实现类 4.空调抽 ...
- [设计模式]简单工厂和工厂方法模式适用场景
简单工厂模式 适用场景: 1.工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂. 2.客户端只知道传入工厂类的参数,对于如何创建对象并不关心. 工厂方法模式 适用场 ...
- 设计模式(四)简单工厂模式
首先,简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂.多方法简单工厂.静态方法简单工厂. 1.简单工厂模式简介 定义 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 简单 ...
- 轻松看懂java设计模式简单工厂模式
点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...
- java设计模式:简单工厂模式
一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.简单工厂模式的角色和职责 1.工厂(C ...
- 干货分享:什么是Java设计工厂模式?
本文主要会介绍三种工厂模式:简单工厂,工厂方法,抽象工厂.其中简单工厂并不属于 GoF 23 种设计模式,工厂方法和抽象工厂模式则是属于 GoF 23 种设计模式之中的 2 种.工厂模式作为一种非常常 ...
最新文章
- 【渝粤题库】陕西师范大学200971教育经济学 作业(专升本、高起本)
- 华为Mate 50系列明年初发布:麒麟990/骁龙8 Gen1加持
- Redis基础(九)——发布与订阅
- jquery实现悬浮框
- NOD32中小企业服务器版部署方法
- 初识C语言——C语言基础知识
- 计算机教学考核方案,计算机专业技能课教学目标考核方案_图文.pdf
- 开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)
- 量化开发必掌握的30个知识点【什么是分笔逐笔数据】?
- Verilog设计遇到了Congestion问题怎么办?
- 我的小游戏开发之路|腾讯TGideas周桂华(花叔)
- 很多人大一就开始学习C语言,你真的学到了吗?
- 技术沙龙出海日本:分享京东区块链实践与创新
- 测试 软通动力软件测试机试_软通动力软件测试笔试题
- 海量3dsmax免费视频教程下载
- Netty即是服务端又是客户端,服务端和客户端相互对应
- mw315r 虚拟服务器,水星MW315R作为从路由怎么设置?
- CMMI2.0之我见-需求开发和管理RDM
- 智慧商贸新增销售数据data到layui表格里面
- FFC 2.算法和数据结构 2.2ES6