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


    简单工厂模式

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

    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)设计抽象类,规范子类的成员方法

  • 相关阅读:
    react 中cookie的使用
    使用react-router-dom 来搭建react路由
    取消浏览器的自动缓存
    vue 的$nextTick方法,与$set()方法
    vue监听data以及prop中的参数变化
    iview树的修改某个节点,树刷新后自动展开你刚才展开的所有节点
    Linux vim常用命令
    Linux yum源配置
    博客园鼠标点击特效
    Linux 简介
  • 原文地址:https://www.cnblogs.com/wawjandcsws/p/10936263.html
Copyright © 2020-2023  润新知