设计模式-工厂模式
2015-12-13 18:48
162 查看
人一上了年纪,拼时间还是不够的,要利用方法,不一定每次事办功倍,但最起码得长远的看还是省心的。
我们平常在用框架时,很容易忽略面相对象的特性。尤其是在业务快速增长是时,调整是一件及其费力的事情,对于同样一个结果,重复花费太多时间显然不是最优结果,花更少的时间解决问题才是提高的地方。
为了很好地利用面向对象,我将我的理解写出来,尽可能代入场景去叙述。
首先介绍第一种工厂模式
工厂模式可以分为几种,先讲第一种,简单工厂模式。
我们要写一个计算器,实现加减就可以了
可能平常这样写很正常,如果的你的加法给网站用,也给客户端用,还当对外接口,需求都不统一,一个改了全都要改,很容易出错,当然不嫌累,也可以一个一个改。
我们可以把利用工厂模式进行简化。
下面是每个具体方法
工厂组装
直接调用
其实给客户端最后两行就可以了,降低了耦合度,方便维护。
我们平常在用框架时,很容易忽略面相对象的特性。尤其是在业务快速增长是时,调整是一件及其费力的事情,对于同样一个结果,重复花费太多时间显然不是最优结果,花更少的时间解决问题才是提高的地方。
为了很好地利用面向对象,我将我的理解写出来,尽可能代入场景去叙述。
首先介绍第一种工厂模式
工厂模式可以分为几种,先讲第一种,简单工厂模式。
我们要写一个计算器,实现加减就可以了
function main(numberA,numberB,Type){ $result = 0; switch(Type){ case '+': //加法 $result = $numberA + $numberB; break; case '-': // 减法 $result = $numberA - $numberB; brea; default: breal; } return $result; } 结果 = main(数量1,数量2,方式)
可能平常这样写很正常,如果的你的加法给网站用,也给客户端用,还当对外接口,需求都不统一,一个改了全都要改,很容易出错,当然不嫌累,也可以一个一个改。
我们可以把利用工厂模式进行简化。
// 定义抽象类 abstract class operation{ protected $_numberA = 0; protected $_numberB = 0; protected $_result = 0; public function __construct($A,$B) { $this->_numberA= $A; $this->_numberB= $B; } public function setNumber($A,$B){ $this->_numberA = $A; $this->_numberB = $B; } abstract function getResult(); }
下面是每个具体方法
class AddFun extends operation{ public function getResult(){ $this->_result = $this->_numberA + $this->_numberB; return $this->_result; } } class SubFun extends operation{ public function getResult(){ $this->_result = $this->_numberA + $this->_numberB; return $this->_result; } }
工厂组装
// 按需加载 class operaFactory{ private static $res; public static function createOpera($type,$A,$B){ switch($type){ case 1: self::$res = new AddFun($A,$B); break; case 2: self::$res = new SubFun($A,$B); break; default: break; } return self::$res; } }
直接调用
$result = operaFactory::createOpera(1,2,3); echo $result->getResult();
其实给客户端最后两行就可以了,降低了耦合度,方便维护。
相关文章推荐
- PHP8新特性之match表达式
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- 三个有用的 Switch 命令
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例