PHP设计模式---工厂模式
2017-11-10 21:04
417 查看
引入
工厂模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。优点
1、简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。明确区分了各自的
职责和权力,有利于整个软件体系结构的优化。
2、在于创建对象上面,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象。减少代码
进行复制粘帖,耦合关系重,牵一发动其他部分代码。
缺点
工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则
实例
/****************简单工厂模式 使用 ****************/ <?php /** * 工厂类,主要用来创建对象 * 功能:根据输入的运算符号,工厂就能实例化出合适的对象 * */ class Factory{ public static function createObj($operate){ switch ($operate){ case '+': return new OperationAdd(); break; case '-': return new OperationSub(); break; case '*': return new OperationSub(); break; case '/': return new OperationDiv(); break; } } } $test=Factory::createObj('/'); $result=$test->getValue(23,0); echo $result; ?> /**************** 工厂操作类实现 ****************/ <?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){ try { if ($num2==0){ throw new Exception("除数不能为0"); }else { return $num1/$num2; } }catch (Exception $e){ echo "错误信息:".$e->getMessage(); } } } ?>工厂模式的简单使用到此结束!!!
相关文章推荐
- 几段代码看透php设计模式之工厂模式
- 初识PHP设计模式--工厂方法
- PHP设计模式-工厂系列(二)-工厂方法模式
- PHP最常用的2种设计模式工厂模式和单例模式介绍
- PHP设计模式 二 (单例 工厂 注册)
- PHP设计模式之工厂模式
- 实例讲解PHP设计模式编程中的简单工厂模式
- php的设计模式学习系列(二)简单工厂模式
- php设计模式学习系列(三)工厂模式
- 初识PHP设计模式--抽象工厂
- 设计模式(一)简单工厂(创建型)(Java&&PHP)
- 9. PHP 之 Factory pattern(工厂设计模式)
- PHP设计模式之工厂方法设计模式实例分析
- PHP设计模式:抽象工厂
- php设计模式 (二)之工厂模式
- PHP设计模式-工厂模式
- php设计模式工厂模式及单例模式
- Php设计模式之工厂模式(一)简单工厂模式
- php中使用接口实现工厂设计模式的代码
- php设计模式之简单工厂