乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      php設(shè)計模式之簡單工廠模式

       哇嘿嘿 2014-09-25
      簡單工廠模式

          ①抽象基類:類中定義抽象一些方法,用以在子類中實現(xiàn)
          ②繼承自抽象基類的子類:實現(xiàn)基類中的抽象方法
          ③工廠類:用以實例化所有相對應(yīng)的子類

        
       
          
          /**
           *
           * 定義個抽象的類,讓子類去繼承實現(xiàn)它
           *
           */
           abstract class Operation{
               //抽象方法不能包含函數(shù)體
               abstract public function getValue($num1,$num2);//強(qiáng)烈要求子類必須實現(xiàn)該功能函數(shù)
           }
           
           
           
           /**
            * 加法類
            */
           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("除數(shù)不能為0");
                       }else {
                           return $num1/$num2;
                       }
                   }catch (Exception $e){
                       echo "錯誤信息:".$e->getMessage();
                   }
               }
           }


       
      通過采用面向?qū)ο蟮睦^承特性,我們可以很容易就能對原有程序進(jìn)行擴(kuò)展,比如:‘乘方’,‘開方’,‘對數(shù)’,‘三角函數(shù)’,‘統(tǒng)計’等,以還可以避免加載沒有必要的代碼。


      如果我們現(xiàn)在需要增加一個求余的類,會非常的簡單
      我們只需要另外寫一個類(該類繼承虛擬基類),在類中完成相應(yīng)的功能(比如:求乘方的運算),而且大大的降低了耦合度,方便日后的維護(hù)及擴(kuò)展

       

       
      復(fù)制代碼
          /**
           * 求余類(remainder)
           *
           */
          class OperationRem extends Operation {
              public function getValue($num1,$num2){
                  return $num1%$num12;
              }


       
      現(xiàn)在還有一個問題未解決,就是如何讓程序根據(jù)用戶輸入的操作符實例化相應(yīng)的對象呢?
      解決辦法:使用一個單獨的類來實現(xiàn)實例化的過程,這個類就是工廠

       


          /**
           * 工程類,主要用來創(chuàng)建對象
           * 功能:根據(jù)輸入的運算符號,工廠就能實例化出合適的對象
           *
           */
          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;


       

      其他關(guān)于關(guān)于此模式的筆記:

       
      工廠模式:
      以交通工具為例子:要求請既可以定制交通工具,又可以定制交通工具生產(chǎn)的過程
      1>定制交通工具
          1.定義一個接口,里面包含交工工具的方法(啟動 運行 停止)

          2.讓飛機(jī),汽車等類去實現(xiàn)他們
      2> 定制工廠(通上類似)
          1.定義一個接口,里面包含交工工具的制造方法(啟動 運行 停止)

          2.分別寫制造飛機(jī),汽車的工廠類去繼承實現(xiàn)這個接口

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多