PHP設計模式之工廠模式

2022-04-19 15:31:53 字數 1350 閱讀 8035

工廠模式(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...