成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

也說設(shè)計模式-----適配器模式

ls0609 / 1908人閱讀

摘要:我為自己網(wǎng)站設(shè)計的框架中模型層封裝數(shù)據(jù)庫也用到了適配器模式。一句話描述適配器就是利用繼承,暴露相同接口。

適配器模式是最容易理解的設(shè)計模式之一,應(yīng)用也很廣泛,常見的應(yīng)用場景有數(shù)據(jù)庫底層連接的封裝和高速緩存類底層封裝等等,在開源程序中常見框架都有適配器模式的應(yīng)用,例如thinkphp中模型基類封裝的數(shù)據(jù)連接。我為自己網(wǎng)站(www.ruanpower.com)設(shè)計的框架LEAFMVC中模型層封裝數(shù)據(jù)庫也用到了適配器模式。

一句話描述:適配器就是利用繼承,暴露相同接口。

作用:一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,暴露共同的接口去調(diào)用

組成方式:1個接口(指定被暴露的共同方法),若干具體實現(xiàn)

偽代碼演示:設(shè)計一個無縫切換mysqli數(shù)據(jù)庫連接或者pdo數(shù)據(jù)庫連接的程序,業(yè)務(wù)邏輯無需了解底層數(shù)據(jù)庫的連接方式,只需要調(diào)用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è)務(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ù)庫工廠方法(勉強稱之為)
        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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21136.html

相關(guān)文章

  • 【開發(fā)調(diào)試】谷歌瀏覽器中調(diào)試移動網(wǎng)頁和測試網(wǎng)速下頁面效果

    摘要:今天有幸給大家分享一下谷歌瀏覽器針對移動網(wǎng)頁測試的技巧,主要是最近做個微信公共號網(wǎng)站。今天就簡單分享下在谷歌瀏覽器測試頁面的適配和網(wǎng)速限制展示。、 今天有幸給大家分享一下谷歌瀏覽器針對移動網(wǎng)頁測試的技巧,主要是最近做個微信公共號網(wǎng)站。所以就要對頁面測試?yán)?。移動網(wǎng)頁我們最長測得就是各種手機大小的頁面效果和出現(xiàn)網(wǎng)絡(luò)問題的效果展示。 今天就簡單分享下在谷歌瀏覽器測試頁面的適配和網(wǎng)速限制展示。 頁...

    番茄西紅柿 評論0 收藏0
  • 聊聊Tomcat的架構(gòu)設(shè)計

    摘要:本篇文章主要是跟大家聊聊的內(nèi)部架構(gòu)體系,讓大家對有個整體的認(rèn)知。方法會創(chuàng)建一個對象,調(diào)用它的方法將字節(jié)流封裝成對象,在創(chuàng)建組件時,會將組件添加到組件中組件而組件在連接器初始化時就已經(jīng)創(chuàng)建好了目前為止,只有一個實現(xiàn)類,就是。 微信公眾號「后端進階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 老司機傾囊相授,帶你一路進階,來不及解釋了快上車! T...

    cnio 評論0 收藏0
  • Web語義化標(biāo)準(zhǔn)解讀

    摘要:為什么說最佳實踐是呢簡單來說,就是這類預(yù)處理器在提供一定的抽象能力的同時,也不會破壞自身的特性。就語義化這件事情而言,如果你的是基于標(biāo)準(zhǔn)來編寫的,意味著你的頁面具備更多的可能性。 原文:https://github.com/kuitos/kuitos.github.io/issues/33 15年年末寫了篇關(guān)于BEM方法論(實踐上內(nèi)容并不是原BEM)的文章,文末給自己挖了個坑說要聊聊w...

    vspiders 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<