摘要:我為自己網(wǎng)站設(shè)計(jì)的框架中模型層封裝數(shù)據(jù)庫(kù)也用到了適配器模式。一句話描述適配器就是利用繼承,暴露相同接口。
適配器模式是最容易理解的設(shè)計(jì)模式之一,應(yīng)用也很廣泛,常見(jiàn)的應(yīng)用場(chǎng)景有數(shù)據(jù)庫(kù)底層連接的封裝和高速緩存類(lèi)底層封裝等等,在開(kāi)源程序中常見(jiàn)框架都有適配器模式的應(yīng)用,例如thinkphp中模型基類(lèi)封裝的數(shù)據(jù)連接。我為自己網(wǎng)站(www.ruanpower.com)設(shè)計(jì)的框架LEAFMVC中模型層封裝數(shù)據(jù)庫(kù)也用到了適配器模式。
一句話描述:適配器就是利用繼承,暴露相同接口。
作用:一個(gè)適配允許通常因?yàn)榻涌诓患嫒荻荒茉谝黄鸸ぷ鞯念?lèi)工作在一起,暴露共同的接口去調(diào)用
組成方式:1個(gè)接口(指定被暴露的共同方法),若干具體實(shí)現(xiàn)
偽代碼演示:設(shè)計(jì)一個(gè)無(wú)縫切換mysqli數(shù)據(jù)庫(kù)連接或者pdo數(shù)據(jù)庫(kù)連接的程序,業(yè)務(wù)邏輯無(wú)需了解底層數(shù)據(jù)庫(kù)的連接方式,只需要調(diào)用db對(duì)象方法即可
//數(shù)據(jù)庫(kù)接口 interface IDb { //連接數(shù)據(jù)庫(kù) function connect(); function query(); function exec(); function select(); function insert(); function delete(); function update(); }
//mysqli模式數(shù)據(jù)庫(kù)連接適配器 class MysqliAdapter implements IDb { function connect() { //youcode } function query() { //youcode } function exec() { //youcode } function select() { //youcode} } function insert() { //youcode} } function delete() { //youcode} } function update() { //youcode} } }
//pdo模式數(shù)據(jù)庫(kù)連接適配器 class PdoAdapter implements IDb { function connect() { //youcode } function query() { //youcode } function exec() { //youcode } function select() { //youcode} } function insert() { //youcode} } function delete() { //youcode} } function update() { //youcode} } }
//你自己的業(yè)務(wù)邏輯 class Business { public $db; public function __construct() { $this->dbFactory("pdo"); } //你自己的方法 function business() { $sql = "SELECT * FRROM user WHERE nickname = "mgckid" "; $result = $this->db->select($sql); return $result; } //數(shù)據(jù)庫(kù)工廠方法(勉強(qiáng)稱之為) private function dbFactory($dbtype) { switch ($dbtype) { case "mysqli": $this->db = new MysqliAdapter(); break; case "pdo": $this->db = new PdoAdapter(); break; } } }
//獲取結(jié)果 $business = new business(); $data = $business->business();
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21136.html
摘要:今天有幸給大家分享一下谷歌瀏覽器針對(duì)移動(dòng)網(wǎng)頁(yè)測(cè)試的技巧,主要是最近做個(gè)微信公共號(hào)網(wǎng)站。今天就簡(jiǎn)單分享下在谷歌瀏覽器測(cè)試頁(yè)面的適配和網(wǎng)速限制展示。、 今天有幸給大家分享一下谷歌瀏覽器針對(duì)移動(dòng)網(wǎng)頁(yè)測(cè)試的技巧,主要是最近做個(gè)微信公共號(hào)網(wǎng)站。所以就要對(duì)頁(yè)面測(cè)試?yán)?。移?dòng)網(wǎng)頁(yè)我們最長(zhǎng)測(cè)得就是各種手機(jī)大小的頁(yè)面效果和出現(xiàn)網(wǎng)絡(luò)問(wèn)題的效果展示。 今天就簡(jiǎn)單分享下在谷歌瀏覽器測(cè)試頁(yè)面的適配和網(wǎng)速限制展示。 頁(yè)...
摘要:本篇文章主要是跟大家聊聊的內(nèi)部架構(gòu)體系,讓大家對(duì)有個(gè)整體的認(rèn)知。方法會(huì)創(chuàng)建一個(gè)對(duì)象,調(diào)用它的方法將字節(jié)流封裝成對(duì)象,在創(chuàng)建組件時(shí),會(huì)將組件添加到組件中組件而組件在連接器初始化時(shí)就已經(jīng)創(chuàng)建好了目前為止,只有一個(gè)實(shí)現(xiàn)類(lèi),就是。 微信公眾號(hào)「后端進(jìn)階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 老司機(jī)傾囊相授,帶你一路進(jìn)階,來(lái)不及解釋了快上車(chē)! T...
摘要:為什么說(shuō)最佳實(shí)踐是呢簡(jiǎn)單來(lái)說(shuō),就是這類(lèi)預(yù)處理器在提供一定的抽象能力的同時(shí),也不會(huì)破壞自身的特性。就語(yǔ)義化這件事情而言,如果你的是基于標(biāo)準(zhǔn)來(lái)編寫(xiě)的,意味著你的頁(yè)面具備更多的可能性。 原文:https://github.com/kuitos/kuitos.github.io/issues/33 15年年末寫(xiě)了篇關(guān)于BEM方法論(實(shí)踐上內(nèi)容并不是原BEM)的文章,文末給自己挖了個(gè)坑說(shuō)要聊聊w...
閱讀 3165·2021-09-26 10:18
閱讀 5416·2021-09-22 15:02
閱讀 2863·2019-08-30 15:53
閱讀 1911·2019-08-29 18:41
閱讀 2769·2019-08-27 10:58
閱讀 2691·2019-08-26 13:49
閱讀 2818·2019-08-26 12:17
閱讀 965·2019-08-26 11:49