基于php設(shè)計模式中工廠模式詳細介紹_PHP教程

      編輯Tag賺U幣

      推薦:基于php設(shè)計模式中單例模式的應(yīng)用分析
      本篇文章是對php設(shè)計模式中單例模式的應(yīng)用進行了詳細的分析介紹,需要的朋友參考下

      工廠模式:由工廠類根據(jù)參數(shù)來決定創(chuàng)建出哪一種產(chǎn)片類的實例
      工廠類:一個專門用來創(chuàng)建其他對象的方法類。即按需分配,傳入?yún)?shù)進行選擇,返回具體的類
      作用:對象創(chuàng)建的封裝、簡化創(chuàng)建對象的操作,即調(diào)用工廠類的一個方法來得到需要的類
      補充:
      1.主要角色
      :抽象產(chǎn)品(Product)、具體產(chǎn)品(Concrete Product)、抽象工廠角色(Creator)
      2.優(yōu)缺點
      優(yōu)點:工廠方法模式可以允許系統(tǒng)在不修改工廠角色的情況下引進心產(chǎn)品
      缺點:客戶可能僅僅為了創(chuàng)建一個特定的Concrete Product對象,就不得不創(chuàng)建一個Creator子類
      3.適用性
      當一個類不知道它所必須創(chuàng)建的對象的時候
      當一個類希望由它的子類來制定它所創(chuàng)建的對象的時候
      當一個類將創(chuàng)建對象的職責委托給多個幫助子類的某一個,并且希望你將哪一個幫助子類是代理這一信息局部化的時候

      復(fù)制代碼 代碼如下:www.wf0088.com

      <?php
      //對象
      class MyObject{
      public function __construct(){}
      public function test(){
      return 'test';
      }
      }
      //工廠
      class MyFactory{
      public static function factory(){
      return new MyObject();
      }
      }

      $myObject = MyFactory::factory();
      echo $myObject->test();
      ?>

      ?<?php
      //抽象類 定義屬性及抽象方法
      abstract class Operation{
      protected $_NumberA = 0;
      protected $_NumberB = 0;
      protected $_Result= 0;

      public function __construct($A,$B){
      $this->_NumberA = $A;
      $this->_NumberB = $B;
      }

      public function setNumber($A,$B){
      $this->_NumberA = $A;
      $this->_NumberB = $B;
      }

      public function clearResult(){
      $this->_Result = 0;
      }

      abstract protected function getResult();
      }

      //操作類
      class OperationAdd extends Operation{
      public function getResult(){
      $this->_Result = $this->_NumbserA + $this->_NumberB;
      return $this->_Result;
      }
      }

      class OperationSub extends Operation{
      public function getResult(){
      $this->_Result = $this->_NumberA - $this->_NumberB;
      return $this->_Result;
      }
      }
      …………

      //工廠類
      class OperationFactory{
      private static $obj;

      public static function CreationOperation($type,$A,$B){
      switch($type){
      case '+':
      self::$obj = new OperationAdd($A,$B);
      break;
      case '-':
      self::$obj = new OperationSub($A,$B);
      break;
      ……
      }
      }
      }

      //操作
      $obj = OperationFactory:: CreationOperation('+',5,6);
      echo $obj-> getResult();
      ?>

      分享:深入解析php之sphinx
      本篇文章是對php中sphinx的使用進行了詳細的分析介紹,需要的朋友參考下

      來源:模板無憂//所屬分類:PHP教程/更新時間:2013-05-16
      相關(guān)PHP教程