设计模式之简单工厂模式

Posted wawjandcsws

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之简单工厂模式相关的知识,希望对你有一定的参考价值。

简单工厂模式

简单工厂模式的主要实现思路是通过一个工厂类实例化需求所需的功能类,这样做可以增加代码的可拓展性,降低耦合性。

1、创建抽象类,规范子类中需要定义的方法(抽象类中的方法在子类中必须被定义)

1 <?php
2 
3 // 抽象类  定义算法方法
4 abstract class Operation{
5     abstract public function getRes($numA,$numB);
6 }

2、创建具体的功能类

 1 <?php
 2 
 3 # 加法类
 4 class OperationAdd extends Operation{
 5     public function getRes($numA,$numB){
 6         return $numA + $numB;
 7     }
 8 }
 9 
10 # 减法类
11 class OperationSub extends Operation{
12     public function getRes($numA,$numB){
13         return $numA - $numB;
14     }
15 }
16 
17 # 乘法类
18 class OperationMul extends Operation{
19     public function getRes($numA,$numB){
20         return $numA * $numB;
21     }
22 }
23 
24 # 除法类
25 class OperationDiv extends Operation{
26     public function getRes($numA,$numB){
27         try {
28             if ($numB == 0) {
29                 throw new Exception("除数不能为0", 1);
30             }else{
31                 return $numA / $numB;
32             }
33         } catch (Exception $e) {
34             echo "错误信息:".$e->getMessage();
35         }
36         
37     }
38 }

 

3、创建核心--工厂类

 1 <?php
 2 
 3 class OperationFactory{
 4     public static function createOperate($operate){
 5         switch ($operate) {
 6             case ‘+‘:
 7                 $oper = new OperationAdd();
 8                 break;
 9             case ‘-‘:
10                 $oper = new OperationSub();
11                 break;
12             case ‘*‘:
13                 $oper = new OperationMul();
14                 break;
15             case ‘/‘:
16                 $oper = new OperationDiv();
17                 break;
18         }
19         return $oper;
20     }
21 }

 

4、模拟客户端

 1 <?php
 2 
 3 class Client{
 4     public function main(){
 5         $oper = OperationFactory::createOperate(‘+‘);
 6         $res = $oper->getRes(1,2);
 7         echo $res;
 8     }
 9 }
10 
11 $client = new Client();
12 $client->main();

 

 

心得:

(1)将功能独立化,易于维护与拓展

(2)设计抽象类,规范子类的成员方法

 

以上是关于设计模式之简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之简单工厂模式

设计模式之简单工厂模式

创建型模式之简单工厂模式实例及代码操作

java设计模式之简单工厂模式

设计模式之工厂模式

设计模式之工厂模式-简单工厂(02)