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


    简单工厂模式

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

    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:transient是什么,有什么作用
    如何阅读java源码
    java里面list是引用的好例子
    sort给文件按照大小排序
    HBase的rowkey排序和scan输出顺序
    记录一次事故——idea,sbt,scala
    一个简单的synchronized多线程问题、梳理与思考
    Android TextView文字描边的实现!!
    android中include标签的使用
    layout_weight 的解释及使用
  • 原文地址:https://www.cnblogs.com/wawjandcsws/p/10936263.html
Copyright © 2020-2023  润新知