簡單工廠模式

2022-03-19 00:49:14 字數 934 閱讀 1983

簡單工廠模式:提供獲取某個類的新例項的乙個介面,同時使呼叫**避免確定實際例項化基類的步驟

請看下面**

<?php 

class mysql_db

class sqlite_db

class pdo_db

class factory else if(strtolower("sqlite")=="sqlite") else

//或者用下面的**實現:

// $type=strtolower($type)."_db";

// return new $type();

} }$a=factory::getdb("sqlite");

var_dump($a);//object(sqlite_db)#1 (0)

$b=factory::getdb("mysql");

var_dump($b);//object(mysql_db)#2 (0)

?>

如果不將factory中的**封裝一下的話,那麼在每次要例項化物件時,都得有那麼多行的if..else if ...或者switch/case來判斷到底要例項化哪個物件;

如果有一百個頁面都要例項化這類物件,如果不封裝,那這麼多的判斷條件就得寫100次,一方面,這麼多**寫著也挺浪費時間的(有時候if/else if或者switch/case多達幾十個),就算你複製貼上一百次也是一樣;另一方面,一旦要修改這些判斷中的某條語句,那麼100個頁面就得挨個修改,哪怕之後只增加乙個兩三行的判斷。

所以可以這些判斷進行封裝,封裝在乙個工廠類的靜態方法中,這個通過呼叫這個工廠中的靜態方法(也就是工廠類提供給外界乙個介面),然後獲得乙個新例項的物件,不用每次都寫一次判斷,減少了很多步驟,這就減少了很多錯誤的發生,還便於修改。在其他頁面中,直接用include包含這個檔案即可。

簡單工廠有一定的侷限,可以看另一篇博文:工廠模式

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...