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