博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php设计模式学习之工厂模式
阅读量:5268 次
发布时间:2019-06-14

本文共 2001 字,大约阅读时间需要 6 分钟。

我的认为:所为工厂模式是事先有一系类class,一个工厂类'

工厂类根据不同的参数创建不同的对象,调用各自的方法;

php利用工厂模式实现计算器:

?php/** * Created by PhpStorm. * User: modern * Date: 16-7-19 * Time: 下午5:24 * 简单工厂模式两数运算器 */echo "hello factory models
";echo "begin
";if(isset($_GET['param1'])){ $param1 = $_GET['param1'];}else{ $param1 = 0;}if(isset($_GET['param2'])){ $param2 = $_GET['param2'];}else{ $param2 = 0;}if(isset($_GET['param3'])){ $param3 = $_GET['param3'];}else{ $param3 = '';}interface Init{ public function getResult($a,$b);}class OperateAdd implements Init{ public function getResult($a,$b) { return $a + $b; }}class OperateSub implements Init{ public function getResult($a,$b) { return $a - $b; }}class OperateMul implements Init{ public function getResult($a,$b) { return $a * $b; }}class OperateDiv implements Init{ public function getResult($a,$b) { try{ if($b == 0){ throw new Exception("除数不能为0"); }else{ return $a / $b; } }catch (\Exception $e){ echo "运算发生错误:".$e->getMessage(); } }}class Calc{ public static function operate($operate) { try{ switch($operate) { case '+': return new OperateAdd();break; case '-': return new OperateSub();break; case '*': return new OperateMul();break; case '/': return new OperateDiv();break; default: throw new Exception("标识错误!"); } }catch (\Exception $e){ echo '运算错误:'.$e->getMessage(); } }}$me = Calc::operate($param3);if(gettype($me) == 'object'){ $result = $me->getResult($param1,$param2); echo $result;}

 

 

解说:本例中,定义接口类init,再定义加减乘除四个类分别实现这个接口类,这样每个运算方法都须事先方法getResult(),定义工厂类,工厂类里定义一个静态方法,用户根据不同参数创建各个方法对象.最后再调用getResult()实现运算.

转载于:https://www.cnblogs.com/sign-ptk/p/5685915.html

你可能感兴趣的文章
互联网基础之DIV和CSS二
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
传微软Windows Phone 7将更新支持HTML 5
查看>>
P1970 花匠
查看>>
query和exec区别
查看>>
java语言与java技术
查看>>
南阳22
查看>>
分享一次在Windows Server2012 R2中安装SQL Server2008
查看>>
NOIP2016提高A组五校联考2总结
查看>>
OpenStack_Glance
查看>>
Spring PropertyPlaceholderConfigurer数据库配置
查看>>
RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理
查看>>
Python日期计算
查看>>
用css3绘制你需要的几何图形
查看>>
对其他团队的项目的意见或建议
查看>>
iOS 项目的编译速度提高
查看>>
机房收费系统——报表
查看>>
How to unshelve many shelves at same time
查看>>
table中checkbox选择多行
查看>>