PHP最常用的2種設(shè)計模式工廠模式和單例模式介紹
更新時間:2012年08月14日 08:58:42 作者:
當你在不斷的試圖從你的應(yīng)用程序中發(fā)現(xiàn)新的特征時,你是否發(fā)現(xiàn)你提出的解決方法和一些以前你已經(jīng)實現(xiàn)的東西是如此的類似呢
1.工廠模式
主要作用是降低耦合度。
abstract class Operation{
abstract public function getValue($num1,$num2);
public function getAttr(){
return 1;
}
}
class Add extends Operation{
public function getValue($num1, $num2){
return $num1+$num2;
}
}
class Sub extends Operation{
public function getValue($num1, $num2){
return $num1-$num2;
}
}
class Factory{
public static function CreateObj($operation){
switch ($operation){
case '+': return new Add();
case '-': return new Sub();
}
}
}
$Op=Factory::CreateObj('-');
echo $Op->getValue(3, 6);
用在真正開發(fā)中一般當做數(shù)據(jù)庫選擇類。
2單例模式
單例是因為一個就足夠了,多了浪費。比如郵局里的電話簿只有一本,有需要的人拿來看,沒有必要每個人要查的時候工作人員就拿一本出來,看完了再回收。
class Mysql{
public static $conn;
public static function getInstance(){
if (!self::$conn){
new self();
return self::$conn;
}else {
return self::$conn;
}
}
private function __construct(){
self::$conn= "mysql_connect:";// mysql_connect('','','')
}
public function __clone()
{
trigger_error("Only one connection");
}
}
echo Mysql::getInstance();
echo Mysql::getInstance();
實際中用作數(shù)據(jù)庫連接類和工廠模式一起使用,根據(jù)參數(shù)調(diào)用單例模式,可以提高資源使用效率。
主要作用是降低耦合度。
復(fù)制代碼 代碼如下:
abstract class Operation{
abstract public function getValue($num1,$num2);
public function getAttr(){
return 1;
}
}
class Add extends Operation{
public function getValue($num1, $num2){
return $num1+$num2;
}
}
class Sub extends Operation{
public function getValue($num1, $num2){
return $num1-$num2;
}
}
class Factory{
public static function CreateObj($operation){
switch ($operation){
case '+': return new Add();
case '-': return new Sub();
}
}
}
$Op=Factory::CreateObj('-');
echo $Op->getValue(3, 6);
用在真正開發(fā)中一般當做數(shù)據(jù)庫選擇類。
2單例模式
單例是因為一個就足夠了,多了浪費。比如郵局里的電話簿只有一本,有需要的人拿來看,沒有必要每個人要查的時候工作人員就拿一本出來,看完了再回收。
復(fù)制代碼 代碼如下:
class Mysql{
public static $conn;
public static function getInstance(){
if (!self::$conn){
new self();
return self::$conn;
}else {
return self::$conn;
}
}
private function __construct(){
self::$conn= "mysql_connect:";// mysql_connect('','','')
}
public function __clone()
{
trigger_error("Only one connection");
}
}
echo Mysql::getInstance();
echo Mysql::getInstance();
實際中用作數(shù)據(jù)庫連接類和工廠模式一起使用,根據(jù)參數(shù)調(diào)用單例模式,可以提高資源使用效率。
相關(guān)文章
phpStudy中升級MySQL版本到5.7.17的方法步驟
這篇文章主要給大家介紹了關(guān)于phpStudy中升級MySQL版本到5.7.17的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-08-08php ZipArchive實現(xiàn)多文件打包下載實例
在本篇文章里我們給各位整理了關(guān)于php ZipArchive實現(xiàn)多文件打包下載實例以及相關(guān)代碼,需要的朋友們可以學習下。2019-10-10php+Memcached實現(xiàn)簡單留言板功能示例
這篇文章主要介紹了php+Memcached實現(xiàn)簡單留言板功能,結(jié)合實例形式較為詳細的分析了php結(jié)合memcached實現(xiàn)留言板的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02