当前位置: 首页 > news >正文

PHP设计模式-简单工厂模式

核心:

        一、定义一个接口类里面写规定好的方法。

                

 interface Message{public function send(array $params);public function getMessage(array $params);public function getCode(array $params);}


        二、定义产品类 、产品类继承接口类 

                

    class AlliYunSms implements Message{public function send(array $params){return '发送短信';}public function getMessage(array $params){return '短信内容';}public function getCode(array $params){return '短信验证码';}}class QQSms implements Message{public function send(array $params){return '发送短信';}public function getMessage(array $params){return '短信内容';}public function getCode(array $params){return '短信验证码';}}class BaiduSms implements Message{public function send(array $params){return '发送短信';}public function getMessage(array $params){return '短信内容';}public function getCode(array $params){return '短信验证码';}}

     

        三、编写工厂类实现业务

    class SmsFactory{public $service=['aliyun' => AlliYunSms::class,'qq'     => QQSms::class,'baidu'  => BaiduSms::class];public $MsgService;public function __construct($type){if(!isset($this->service[$type])){throw new \Exception('短信服务不存在');}$this->MsgService = $this->service[$type];}public static function create(string $type){$class = __NAMESPACE__.'\\'.$type.'Sms';return new $class();}public  function send(array $params){$this->MsgService->send($params);//业务逻辑return '发送成功';}}$service=new SmsFactory('aliyun');$service->send(['name'=>'thinkphp'])

总结

大家有更好的写法请欢迎讨论

http://www.lryc.cn/news/406117.html

相关文章:

  • C语言航空售票系统
  • Oracle 19c打Datapatch数据补丁报错处理
  • Linux shell编程学习笔记66:ping命令 超详细的选项说明
  • SSL/TLS和SSL VPN
  • 浅谈WebSerice
  • linux快速入门-学习笔记
  • 科普文:5种Linux下软件部署方式说明
  • Redisson中的RBlockingQueue的使用场景及例子
  • 【办公软件】Office 2019以上版本PPT 做平滑切换
  • connect-multiparty中间件用法以及实例--文件上传中间件(保姆级别教学)
  • 0503触发器的电路结构和工作原理
  • LeetCode:二叉树的中序遍历(C语言)
  • MySQL数据库基本安装与部署
  • paraFoam 运行 报错 usr/lib/x86_64-linux-gnu/libQt5Core.so 已解决
  • 科技前沿:Llama 3.1的突破与革新
  • 每天一个数据分析题(四百四十七)- 业务系统
  • 如何保护你的网络安全?
  • Nginx 怎样处理请求的重试机制?
  • 自己开发软件实现网站抓取m3u8链接
  • [Python3] 多模式字符串搜索 `Aho-Corasick`
  • 4 Types of Kaggle Competitions
  • 【STM32】stm32中GPIO_ReadInputDataBit()是什么意思
  • Study--Oracle-07-ASM相关参数(三)
  • 【STM32嵌入式系统设计与开发拓展】——12_Timer(定时器中断实验)
  • iPhone 17系列取消17 Plus版本?新一代苹果手机迎来新变革
  • Bootstrap实现dialog上一步下一步多个弹窗交互
  • iOS实际开发中使用数据驱动页面布局
  • 后端开发刷题 | 笔试
  • ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案
  • STM32自己从零开始实操10:PCB全过程