工廠模式(factory)允許你在**執行時例項化物件。它之所以被稱為工廠模式是因為它負責「生產」物件。工廠方法的引數是 你要生成的物件對應的類名稱。
①抽象基類:類中定義抽象一些方法,用以在子類中實現
②繼承自抽象基類的子類:實現基類中的抽象方法
③工廠類:用以例項化物件
eg:
簡單工廠模式的初步實現<?php
/*** 操作類
* 因為包含有抽象方法,所以類必須宣告為抽象類
*/abstract
class
operation
/*** 加法類
*/class operationadd extends
operation
}/**
* 減法類
*/class operationsub extends
operation
}/**
* 乘法類
*/class operationmul extends
operation
}/**
* 除法類
*/class operationdiv extends
operation
else
}catch (exception$e)}}
?>
這裡採用了物件導向的繼承特性,首先宣告乙個虛擬基類,在基類中指定子類務必實現的方法(getvalue())
分析:通過採用物件導向的繼承特性,我們可以很容易就能對原有程式進行擴充套件,比如:『乘方』,『開方』,『對數』,『三角函式』,『統計』等等。
eg:
求餘類<?php
/*** 求餘類(remainder)
**/class operationrem extends
operation
}?>
我們只需要另外寫乙個類(該類繼承虛擬基類),在類中完成相應的功能(比如:求乘方的運算),而且大大的降低了耦合度,方便日後的維護及擴充套件
現在還有乙個問題未解決,就是如何讓程式根據使用者輸入的操作符例項化相應的物件呢?
解決辦法:使用乙個單獨的類來實現例項化的過程,這個類就是工廠
**如下:
工廠類<?php
/*** 工程類,主要用來建立物件
* 功能:根據輸入的運算符號,工廠就能例項化出合適的物件
**/class
factory}}
$test=factory::createobj('/');
$result=$test->getvalue(23,0);
echo
$result;?
摘自:
php設計模式之工廠模式
一直都對php的設計模式有著一種特殊的 情結 從最開始接觸到的單例模式,到經典的mvc設計模式,每次的接觸都讓我為之驚奇。買了本php設計模式在家看,發現,都是專有名詞,再加上太專業的術語,讓我沒有看下去的勇氣。無意之中逛論壇,發現乙個部落格,關於php的五種設計模式,其中就有工廠模式。看完後,第一...
php設計模式之工廠模式
工廠模式的最大優點在於建立物件上面,就是把建立物件的過程封裝起來,這樣隨時可以產生乙個新的物件。減少 進行複製粘帖,耦合關係重,牽一發動其他部分 通俗的說,以前建立乙個物件要使用new 現在把這個過程封裝起來了。假設不使用工廠模式 那麼很多地方呼叫類a 就會這樣子建立乙個例項 new a 假設某天需...
php模式設計之 工廠模式
那麼何為工廠模式?從名字來看,似乎看不出什麼端倪。工廠模式,和生產有關?還是和生產流程 子了,所謂工廠模式還真和生產有關。生產什麼呢?生產出來的是乙個例項物件。通過什麼裝置生產?通過乙個工廠類生產。怎麼生產呢?工廠類呼叫自身靜態方法 來生產物件例項。工廠模式有乙個關鍵的構造,根據一般原則命名為fac...