【工厂模式】短信工具类示例
短信工具类结构图:
-factory --lib ---Aliyun.php // 阿里短信类 ---Txyun.php // 腾讯短信类 --demo.php // 短信工具类测试入口 --ISms.php // 短信基础接口 --SmsFactory.php // 短信工厂 --XhSms.php // 短信调用入口
文件内容示例:
1)Aliyun.php 阿里云短信类
/** * 阿里云短信类 * @author wangdb */ class Aliyun implements ISms{ public function sendSms(){ echo 'Aliyun SendSms<br>'; } }
2)Txyun.php 腾讯短信类
/** * 腾讯短信类 * @author wangdb */ class Txyun implements ISms{ public function sendSms(){ echo 'Txyun SendSms<br>'; } }
3)ISms.php 短信基础接口
/** * 短信接口 * @author wangdb */ interface ISms{ function sendSms(); }
4)SmsFactory.php 短信工厂
/** * 短信工厂 * @author wangdb */ include './ISms.php'; include './lib/Aliyun.php'; include './lib/Txyun.php'; class SmsFactory{ // 生成短信对象 public static function createSms($func){ return new $func(); } }
5)XhSms.php 短信调用入口文件
/** * 工厂模式之短信入口 * @author wangdb */ include './SmsFactory.php'; class XhSms{ CONST ALIYUN = 'Aliyun'; // 阿里云短信 CONST TXYUN = 'Txyun'; // 腾讯云短信 private static $_instance; // 单例 /** * 单例模式 * @return XhSms */ public static function gi(){ if (!self::$_instance instanceof static) { self::$_instance = new static(); } return self::$_instance; } /** * 单条短信发送 */ public static function sendSms($params, $plat = self::ALIYUN){ if(!in_array($plat,array(self::ALIYUN, self::TXYUN))){ return '参数错误'; } echo '单条短信发送【调用多条短信】<br>'; self::sendMultiSms($params, $plat); // 单条短信调用多条短信 } /** * 多条短信发送 */ public static function sendMultiSms($params, $plat = self::ALIYUN){ if(!in_array($plat,array(self::ALIYUN, self::TXYUN))){ return '参数错误'; } echo '多条短信发送<br>'; $YunSms = SmsFactory::createSms( $plat ); $YunSms->sendSms($params); } }
6)demo.php 短信测试文件
/** * 工厂模式测试Demo * @author wangdb */ include './XhSms.php'; $params = array(); $res = XhSms::gi()->sendSms($params, XhSms::ALIYUN);
访问Demo结果示意图:
单条短信发送【调用多条短信】 多条短信发送 Aliyun SendSms