日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 工厂模式封装数据库,PHP设计模式之工厂模式

發(fā)布時間:2024/10/8 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 工厂模式封装数据库,PHP设计模式之工厂模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概念:

工廠設計模式提供獲取某個對象的新實例的一個接口,同時使調用代碼避免確定實際實例化基類步驟。 很多高級模式都是依賴于工廠模式。

好處:

PHP中能夠創(chuàng)建基于變量內容的類的新實例,減少主代碼流中的基于條件復雜性; 同時如果類發(fā)生改變不需要所有的地方進行修改,只需要在工廠中進行修改 (無論對象被修改或者添加其他對象,Factory對象調用方式仍讓是相同的)

注意重點: 工廠模式簡單可以理解為,把new一個對象的寫法,寫成調用靜態(tài)方法的方式去創(chuàng)建對象!或者更簡單說是封裝new,使用接口強制實現(xiàn)工廠接口方式,優(yōu)點:靜態(tài)調用,方便改變子工廠類名,缺點:多次使用new,解決方案:可以結合單例模式進行單次調用

一、什么是工廠模式?

一個類通過本身的靜態(tài)方法來,實例化一個類并返回一個實例對象;

二、工廠模式特點?

類命名特點:nameFactory eg: class mysqlFactory{} 【這是為了規(guī)范,當然也去起其他任意名字】

靜態(tài)方法名稱:static public function factory($class_name){} 【靜態(tài)方法是類與外界的接口, 返回的是一個對象】

三、優(yōu)點?

如果已經使用的類內部發(fā)生改變,哪不需要在所有的地方都改變,只需要在類工廠類里改變既可,

比如:連接數(shù)據(jù)庫,可以使用mysql 、mysqli、pdo,根據(jù)不同參數(shù)配置使用不同的數(shù)據(jù)庫操作類

四、應用場景

做支付接口的時候,未來可能對應不同的支付網(wǎng)關:支付寶、財付通、網(wǎng)銀在線等。

方便未來擴展,設計成工廠模式。定一個專門生產網(wǎng)關接口的工廠,抽象出來,

做成接口形式,讓所有的子類都要實現(xiàn)它的接口。

以后加一個支付方式,要使用哪一種支付方式,改變一下參數(shù)即可。

在為用戶注冊的時候,分為很多種角色的用戶。

比如冊用戶,匿名用戶、管理員用戶等。完全使用可以使用工廠的思想來實現(xiàn),

代碼也容易維護,為每種角色可以生成操作的類等等。

系統(tǒng)對接多個不同類型的數(shù)據(jù)庫,mysql,oracle,sqlserver

/**

* 抽象工廠角色

*/

interface Creator {

public function factoryMethod();

}

/**

* 具體工廠角色A

*/

class ConcreteCreatorA implements Creator {

/**

* 工廠方法 返回具體 產品A

* @return ConcreteProductA

*/

public function factoryMethod() {

return new ConcreteProductA();

}

}

/**

* 具體工廠角色B

*/

class ConcreteCreatorB implements Creator {

/**

* 工廠方法 返回具體 產品B

* @return ConcreteProductB

*/

public function factoryMethod() {

return new ConcreteProductB();

}

}

/**

* 抽象產品角色(定義要子工廠實現(xiàn)的方法)

*/

interface Product {

public function operation();

}

/**

* 具體產品角色A

*/

class ConcreteProductA implements Product {

/**

* 接口方法實現(xiàn) 輸出特定字符串

*/

public function operation() {

echo 'ConcreteProductA
';

}

}

/**

* 具體產品角色B

*/

class ConcreteProductB implements Product {

/**

* 接口方法實現(xiàn) 輸出特定字符串

*/

public function operation() {

echo 'ConcreteProductB
';

}

}

class Client {

/**

* Main program.

*/

public static function main() {

$creatorA = new ConcreteCreatorA();

$productA = $creatorA->factoryMethod();

$productA->operation();

$creatorB = new ConcreteCreatorB();

$productB = $creatorB->factoryMethod();

$productB->operation();

}

}

Client::main();

?>

【工廠方法模式與簡單工廠模式】

工廠方法模式與簡單工廠模式再結構上的不同不是很明顯。

工廠方法類的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具體類上。

工廠方法模式之所以有一個別名叫多態(tài)性工廠模式是因為具體工廠類都有共同的接口,或者有共同的抽象父類。

當系統(tǒng)擴展需要添加新的產品對象時,僅僅需要添加一個具體對象以及一個具體工廠對象,原有工廠對象不需要進行任何修改,也不需要修改客戶端,很好的符合了”開放-封閉”原則。而簡單工廠模式在添加新產品對象后不得不修改工廠方法,擴展性不好。

工廠方法模式退化后可以演變成簡單工廠模式。

本作品采用《CC 協(xié)議》,轉載必須注明作者和本文鏈接

總結

以上是生活随笔為你收集整理的php 工厂模式封装数据库,PHP设计模式之工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。