博客
关于我
php--class的工厂模式的示例
阅读量:290 次
发布时间:2019-03-03

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

getMessage(); } }}//类的实例化$test = new calc();echo '+ ='.$test->calculate(100,99,'+');echo "
";echo '- ='.$test->calculate(100,99,'-');echo "
";echo '* ='.$test->calculate(100,99,'*');echo "
";echo '/ ='.$test->calculate(100,99,'/');echo "
";echo '/ ='.$test->calculate(100,0,'/');echo "
";echo '% ='.$test->calculate(100,99,'%');echo "
";

工厂模式:

echo "

";//接口interface calc1{ public function getValue($num1,$num2);}//加法,继承接口并实现class math_add implements calc1{ public function getValue($num1, $num2) { return $num1 + $num2; }}//减法class math_sub implements calc1{ public function getValue($num1, $num2) { return $num1 - $num2; }}//乘法class math_mul implements calc1{ public function getValue($num1, $num2) { return $num1 * $num2; }}//除法class math_div implements calc1{ public function getValue($num1, $num2) { try { if($num2 == 0) { throw new Exception('chu shu bu meng wei 0'); } else { return $num1 / $num2; } } catch (Exception $e) { echo "wrong :".$e->getMessage(); } }}//工厂类,静态方法创建对象class factory1{ public static function createObject($operator) { switch ($operator) { case '+': return new math_add(); break; case '-': return new math_sub(); break; case '*': return new math_mul(); break; case '/': return new math_div(); break; } }}//创建加法类实例$fac1 = factory1::createObject('+');echo '+ ='.$fac1->getValue(100,99);echo "
";//创建减法类实例$fac2 = factory1::createObject('-');echo '- ='.$fac2->getValue(100,99);echo "
";//创建乘法类实例$fac3 = factory1::createObject('*');echo '* ='.$fac3->getValue(100,99);echo "
";//创建除法类实例$fac4 = factory1::createObject('/');echo '/ ='.$fac4->getValue(100,99);echo "
";//除数为0$fac5 = factory1::createObject('/');echo '+ ='.$fac5->getValue(100,0);echo "
";

 

转载地址:http://ypem.baihongyu.com/

你可能感兴趣的文章
C/C++ * & : :: -> .等特殊符号
查看>>
C++中this指针
查看>>
(00)剑指 Offer 13. 机器人的运动范围
查看>>
剑指 Offer 18 删除链表的节点
查看>>
剑指 Offer 25. 合并两个排序的链表
查看>>
MySQL多表查询_索引_事务和隔离和事务原理_复习
查看>>
C# WinForm 监视文件变化程序
查看>>
Redis主从复制原理
查看>>
将本地已有的maven工程导入工作空间
查看>>
mysql中没有boolean,而是tinyint
查看>>
这个坑
查看>>
spring boot和sping的一些注解
查看>>
Mybatis整合ehcache
查看>>
Java基础之反射
查看>>
线程池之SingleThreadPool学习
查看>>
对象的创建、内存布局和访问定位
查看>>
TCP第4次挥手为何要等待2MSL才关闭?
查看>>
Redis支持的5种数据类型
查看>>
FreeRTOS学习笔记(9)——内存管理
查看>>
FreeRTOS学习笔记(10)——中断管理
查看>>