简单工厂模式
2015-06-25 17:05
260 查看
/** * 计算器 * @param $op_num_1 操作数1 * @param $op_num_2 操作数2 * @param $op_str 操作符 * @return 操作结果 */ function op($op_num_1,$op_num_2,$op_str) { $fun = op_factory($op_str); return $fun($op_num_1,$op_num_2); } /** * 我他丫无法描述该函数 * @param $op_str 操作符 * @return 具体执行操作的函数 */ function op_factory($op_str) { switch ($op_str) { case '+': return 'op_add'; break; default: return 'op_subtract'; break; } } /** * 加法 */ function op_add($op_num_1,$op_num_2) { return $op_num_1 + $op_num_2; } /** * 减法 */ function op_subtract($op_num_1,$op_num_2) { return $op_num_1 - $op_num_2; } echo op(100,50,'-'),'<br/>'; //----------------我--------是--------分--------割--------线---------------- /** * 计算器工厂 */ class op_factory { public static function create_op($op_str) { switch ($op_str) { case '+': return new op_add(); break; default: return new op_subtract(); break; } } } /** * 计算器 */ abstract class op { public $op_num_1 = 0; //操作数1 public $op_num_2 = 0; //操作数2 abstract function get_result(); } /** * 加法 */ class op_add extends op { public function get_result() { return $this->op_num_1 + $this->op_num_2; } } /** * 减法 */ class op_subtract extends op { public function get_result() { return $this->op_num_1 - $this->op_num_2; } } $op = op_factory::create_op('+'); //通过工厂生成对象 $op->op_num_1 = 100; $op->op_num_2 = 50; print_r($op->get_result());
相关文章推荐
- Algorithm --> 顺序打印矩阵
- 【学习】博弈相关:Nim
- css hack
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- 分布式文件系统FastDFS架构剖析
- Oracle中的pctfree和pctused
- delphi 调用webservice产生 Microsoft MSXML is not installed的解决办法。
- 堆栈转
- Leetcode 217 Contains Duplicate
- C++语言债券系列之十一——友元函数和拷贝构造函数
- sqlserver字符串转为datetime的方法
- 通过例子学习Rust 前言
- error C2872: “IDocument”: 不明确的符号
- 【app运营】3阶段解析O2O产品的APP该如何运营推广?
- 70.交换变量值
- linux文件系统总结
- 年损失超20亿,手游行业第三方安全服务需求迫切
- Log4j自定义Appender介绍
- Oracle中的initrans-maxtrans
- 利用CodeIgniter中的Email类发邮件