程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php設計模式之工廠模式

php設計模式之工廠模式

編輯:關於PHP編程

php設計模式之工廠模式


工廠模式:

 

工廠模式的最大優點在於創建對象上面,就是把創建對象的過程封裝起來,這樣隨時可以產生一個新的對象。

 

減少代碼進行復制粘帖,耦合關系重,牽一發動其他部分代碼。

通俗的說,以前創建一個對象要使用new,現在把這個過程封裝起來了。

假設不使用工廠模式:那麼很多地方調用類a,代碼就會這樣子創建一個實例:new a(),假設某天需要把a類的名稱修改,意味著很多調用的代碼都要修改。

建立一個工廠(一個函數或一個類方法)來制造新的對象,它的任務就是把對象的創建過程都封裝起來,

創建對象不是使用new的形式了。而是定義一個方法,用於創建對象實例。

 

工廠方法:

比如你的工廠叫做“香煙工廠”,那麼可以有“七匹狼工廠”“中華工廠”等,但是,這個工廠只生廠一種商品:香煙;

 

抽象工廠:無法描述它到底生產什麼產品,它生產很多類型的產品(所以抽象工廠就會生成子工廠)。

 

你的工廠是綜合型的,是生產“一系列”產品,而不是“一個”,比如:生產“香煙”,還有“啤酒”等。然後它也可以有派生出來的具體的工廠,但這些工廠都是生產這一系列產 品,只是可能因為地域不一樣,為了適應當地人口味,味道也不太一樣。

 

工廠模式:理解成只生成一種產品的工廠。比如生產香煙的。

 

工廠方法:工廠的一種產品生產線 。比如鍵盤的生成過程。

 

< php

/**

* 工廠方法模式

*

* 定義一個用於創建對象的接口,讓子類決定將哪一個類實例化,使用一個類的實例化延遲到其子類

*/

 

/*

class DBFactory

{

public static function create($type)

{

swtich($type)

{

case "Mysql":

return new MysqlDB(); break;

case "Postgre":

return new PostgreDB(); break;

case "Mssql":

return new MssqlDB(); break;

}

}

}

*/

class DBFactory

{

   publicstaticfunction create($type)

{

   $class=$type."DB";

   returnnew$class;

}

}

 

interface DB

{

   publicfunction connect();

   publicfunctionexec();

}

 

class MysqlDB implements DB

{

   publicfunction __construct() {

   echo"mysql db
";

}

 

   publicfunction connect() {

}

 

   publicfunctionexec() {

}

}

 

class PostgreDB implements DB

{

   publicfunction __construct() {

   echo"Postgre db
";

}

 

   publicfunction connect() {

   }

 

   publicfunctionexec() {

}

}

 

class MssqlDB implements DB

{

   publicfunction __construct() {

   echo"mssql db
";

}

 

   publicfunction connect() {

}

   publicfunctionexec() {

}

}

 

 

$oMysql= DBFactory::create("Mysql");

$oPostgre= DBFactory::create("Postgre");

$oMssql= DBFactory::create("Mssql");


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved