工廠類是指包含乙個專門用來建立其他物件的方法的類,工廠類在多型性程式設計實踐中是至關重要的,它允許動態的替換類,修改配置,通常會使應用程式更加 靈活,熟練掌握工廠模式高階php開發人員是很重要的。
工廠模式通常用來返回符合類似介面的不同的類,工廠的一種常見用法就是建立多型的提供者,從而允許我們基於應用程式邏輯或者配置設定來決定應例項化哪乙個 類,例如,可以使用這樣的提供者來擴充套件乙個類,而不需要重構應用程式的其他部分,從而使用新的擴充套件後的名稱 。
通常,工廠模式有乙個關鍵的構造,根據一般原則命名為factory的靜態方法,然而這只是一種原則,工廠方法可以任意命名,這個靜態還可以接受任意資料 的引數,必須返回乙個物件。
基本的工廠類
php**
class myobject
class myfactory
} $instance=myfactory::factory();
使用工廠類解析影象檔案
php**
<?php
inte***ce iimage
class image_png implements iimage
private
function _parse()
public
function getwidth()
public
function getheight()
public
function getdata()
} class image_jpeg implements iimage
private
function _parse()
public
function getwidth()
public
function getheight()
public
function getdata()
} class imagefactory
if($ret instanceof iimage)else
} }
//當使用影象檔名呼叫 工廠方法時,根據傳入的檔案型別不同,取得不同物件。
php**
//呼叫imagefactoyr
//$image是image_jpeg類的乙個例項
echo
$image->getwidth();
使用工廠類解決資料庫可移值性問題,在資料庫應用程式中,工廠模式可以在以下兩個方面起作用。
1.使軟體更容易支援各種不同的資料庫平台,用於擴充套件使用者群
2.如果軟體是內部使用,需要修改資料庫時,可以容易將應用程式移值到別乙個平台
在**中,建立了乙個名為user的資料庫表來測試它,這個表定義乙個名為email的varchar型別字段
php**
<?php
inte***ce idatabasebindings
class pgsql implements idatabasebindings
public
function userexists($email)else
} }
class mysql implements idatabasebindings
public
function userexists($email)else
} }
class databasefactory
} }
應用程式不必知道它與何種型別的資料庫連線,只會基於idatabasebindings介面定義的規則直接與工廠返回的例項打交道。
php**
//呼叫databasefactoy
$db=databasefactory::factory();
$db->userexists('[email protected]');
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...
設計模式 工廠模式之簡單工廠
工廠模式可以分為 簡單工廠模式 普通工廠模式 靜態工廠模式 抽象工廠模式 簡單工廠模式 就是如何去例項化物件的問題,對於很容易變化的問題,應該考慮用乙個單獨的類來做這個創造例項的過程,這個單獨的類就是工廠 例子 通過簡單工廠建立各種圖形的實現過程 簡單工廠模式建立步驟 建立乙個介面 例 圖形介面 建...
設計模式 工廠模式之簡單工廠
我們常見的設計模式,大致可以分為三大類 建立型 結構性 行為型。工廠模式,屬於建立型。工廠模式到底起的是什麼作用呢?概括來說就是解耦。當某一類物件需要頻繁建立的時候,就會和程式產生比較大的耦合,在物件初始化屬性較多時,工廠模式可以較少這種耦合,這就是他的作用。一般情況下根據場景不同,工廠模式有幾種不...