PHP设计模式之----简单工厂模式
定义个抽象的类(或接口),让子类去继承(实现)它
abstract class Operation { abstract public function getValue($num1, $num2); }
/** * 加法类 */ class OperationAdd extends Operation { public function getValue($num1, $num2) { return $num1 + $num2; } } /** * 减法类 */ class OperationSub extends Operation { public function getValue($num1, $num2) { return $num1 - $num2; } } /** * 乘法类 */ class OperationMul extends Operation { public function getValue($num1, $num2) { return $num1 * $num2; } } /** * 除法类 */ class OperationDiv extends Operation { public function getValue($num1, $num2) { return $num1 / $num2; } }
通过采用面向对象的继承特性,我们可以很容易就能对原有程序进行扩展,比如:‘乘方’,‘开方’,‘对数’,‘三角函数’,‘统计’等,以还可以避免加载没有必要的代码。
如果我们现在需要增加一个求余的类,会非常的简单。
我们只需要另外写一个类(该类继承虚拟基类),在类中完成相应的功能(比如:求乘方的运算),而且大大的降低了耦合度,方便日后的维护及扩展。
使用一个单独的类来实现实例化的过程,这个类就是工厂:
class Factory { public static function createObj($operate) { switch ($operate){ case '+':return new OperationAdd();break; case '-':return new OperationSub();break; case '*':return new OperationMul();break; case '/':return new OperationDiv();break; case '%':return new OperationRem();break; } } } $obj = Factory::createObj('%'); $v = $obj->getValue(3,2); print_r($v);
=======================================
由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论哦。你也可以关注我,一起学习哦!