php實現工廠模式

2021-09-06 18:43:31 字數 2278 閱讀 3683

設計模式-使用php實現工廠方法模式

【概要】

建立型模式

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使用乙個類的例項化延遲到其子類【gof95】

【結構圖】

【主要角色】

抽象產品(product)角色:詳細產品物件共同擁有的父類或介面

詳細產品(concrete product)角色:實現抽象產品角色所定義的介面,而且工廠方法模式所建立的每個物件都是某詳細產品物件的例項

抽象工廠(creator)角色:模式中不論什麼建立物件的工廠類都要實現這個介面,它宣告了工廠方法,該方法返回乙個product型別的物件。

creator也能夠定義乙個工廠方法的預設實現,它返回乙個預設的的concreteproduct物件

【優缺點】

長處:工廠方法模式能夠同意系統在不改動工廠角色的情況下引進新產品。

缺點:客戶可能只為了建立乙個特定的concreteproduct物件,就不得不建立乙個creator子類

【適用性】

1、當乙個類不知道它所必須建立的物件的類的時候

2、當乙個類希望由它的子類來指定它所建立的物件的時候

3、當類將建立物件的職責託付給多個幫助子類的某乙個,而且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候

【工廠模式php例項】

<?php 

/*** 工廠方法模式

* -------------

* @author zhaoxuejie * @package design pattern

* @version v1.0 2011-12-14

*///抽象產品

inte***ce work

//詳細產品實現

class student implements work

}class teacher implements work

}//抽象工廠

inte***ce worke***ctory

//詳細抽象工廠實現

class studentfactory

}class teache***ctory

}//client

class client

}client::main();

?>

【簡單工廠模式】

從設計模式的型別上來說,簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(staticfactory method)模式,但不屬於23種gof設計模式之中的乙個。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單有用的模式,能夠理解為是不同工廠模式的乙個特殊實現。

【簡單工廠模式php例項】

<?php 

/*** 簡單工廠模式

* -------------

* @author zhaoxuejie * @package design pattern

* @version v1.0 2011-12-14

*/inte***ce comput

//操作類

class operation

//清零

function clearresult()

}//加法

class operationadd extends operation implements comput

}//減法

class operationsub extends operation implements comput

}//乘法

class operationmul extends operation implements comput

}//除法

class operationdiv extends operation implements comput

return $this->result = ($this->number_a / $this->number_b); }}

//工廠

class operationfactory

return self::$obj;

} catch (exception $e) }}

//工廠建立例項

$obj = operationfactory::createoperation('*');

$obj->setnumber(3, 4);

echo $obj->getresults();

?>

php實現工廠模式

設計模式 使用php實現工廠方法模式 概要 建立型模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使用乙個類的例項化延遲到其子類 gof95 結構圖 主要角色 抽象產品 product 角色 詳細產品物件共同擁有的父類或介面 詳細產品 concrete pro...

php實現工廠模式

設計模式 使用php實現工廠方法模式 概要 建立型模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使用乙個類的例項化延遲到其子類 gof95 結構圖 主要角色 抽象產品 product 角色 詳細產品物件共同擁有的父類或介面 詳細產品 concrete pro...

php實現工廠模式

設計模式 使用php實現工廠方法模式 概要 建立型模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使用乙個類的例項化延遲到其子類 gof95 結構圖 主要角色 抽象產品 product 角色 具體產品物件共有的父類或介面 具體產品 concrete produ...