场景:使用工厂模式接入:阿里短信验证、腾讯短信验证、百度短信验证

创建类文件

  1. BaseSMS.php – 基础短信服务接口类
  2. AliSMS.php – 阿里短信服务类
  3. BaiduSMS.php – 百度短信服务类
  4. TencentSMS.php – 腾讯短信服务类
  5. 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工厂模式使用场景相关推荐

  1. php 工厂模式 使用场景,PHP设计模式之工厂模式

    序言 每一种模式都有它的定义,它的使用场景.我们从实际当中进行学习并且在相应额场景可以运用.所谓的设计模式只是一种思想,并不存在是有固定的代码.学会了思想并且对应上使用的场景,慢慢而言在开发之中这也就 ...

  2. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  3. java 工厂模式_软件设计工厂模式使用场景介绍及java举例(附源码)

    工厂模式是软件设计中最常用也最常见的一种模式,这里通过一个例子来说明其功能. 问题背景 用户需求:请提供 1).图形绘制功能,当前可绘制当前可绘制原型.方形.三角形.未来可能需要支持绘制菱形.梯形等形 ...

  4. 【设计模式】抽象工厂模式 ( 简介 | 适用场景 | 优缺点 | 产品等级结构和产品族 | 代码示例 )

    文章目录 一.抽象工厂模式简介 二.抽象工厂模式适用场景 三.抽象工厂模式优缺点 四.产品等级结构和产品族 五.抽象工厂模式代码示例 1.冰箱抽象类 2.美的冰箱实现类 3.格力冰箱实现类 4.空调抽 ...

  5. [设计模式]简单工厂和工厂方法模式适用场景

    简单工厂模式 适用场景: 1.工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂. 2.客户端只知道传入工厂类的参数,对于如何创建对象并不关心. 工厂方法模式 适用场 ...

  6. 设计模式(四)简单工厂模式

    首先,简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂.多方法简单工厂.静态方法简单工厂. 1.简单工厂模式简介 定义 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 简单 ...

  7. 轻松看懂java设计模式简单工厂模式

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  8. java设计模式:简单工厂模式

    一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.简单工厂模式的角色和职责 1.工厂(C ...

  9. 干货分享:什么是Java设计工厂模式?

    本文主要会介绍三种工厂模式:简单工厂,工厂方法,抽象工厂.其中简单工厂并不属于 GoF 23 种设计模式,工厂方法和抽象工厂模式则是属于 GoF 23 种设计模式之中的 2 种.工厂模式作为一种非常常 ...

最新文章

  1. 【渝粤题库】陕西师范大学200971教育经济学 作业(专升本、高起本)
  2. 华为Mate 50系列明年初发布:麒麟990/骁龙8 Gen1加持
  3. Redis基础(九)——发布与订阅
  4. jquery实现悬浮框
  5. NOD32中小企业服务器版部署方法
  6. 初识C语言——C语言基础知识
  7. 计算机教学考核方案,计算机专业技能课教学目标考核方案_图文.pdf
  8. 开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)
  9. 量化开发必掌握的30个知识点【什么是分笔逐笔数据】?
  10. Verilog设计遇到了Congestion问题怎么办?
  11. 我的小游戏开发之路|腾讯TGideas周桂华(花叔)
  12. 很多人大一就开始学习C语言,你真的学到了吗?
  13. 技术沙龙出海日本:分享京东区块链实践与创新
  14. 测试 软通动力软件测试机试_软通动力软件测试笔试题
  15. 海量3dsmax免费视频教程下载
  16. Netty即是服务端又是客户端,服务端和客户端相互对应
  17. mw315r 虚拟服务器,水星MW315R作为从路由怎么设置?
  18. CMMI2.0之我见-需求开发和管理RDM
  19. 智慧商贸新增销售数据data到layui表格里面
  20. FFC 2.算法和数据结构 2.2ES6

热门文章

  1. 国内最好用的短网址推荐
  2. 石油大c语言答案,中国石油大学C语言上机题答案(2013版)答案 最全最详细
  3. Sql group by 分组取时间最新的一条数据
  4. 第一篇博客-----对未来的期望和对自己的要求
  5. 【面试必会】苦逼程序猿拿头发换生活,深度好文
  6. Windows安装python3.6教程
  7. 用python的gui界面设计签名_Python GUI Tkinter实现个性签名设计
  8. windows定时开关机、休眠、唤醒 + windows定时启动程序
  9. 《婚姻之礼》 ---心密二祖王骧陆
  10. CSDN 竞赛 32 期