国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP設計模式之:適配器模式入門教程

2024-05-04 21:49:58
字體:
來源:轉載
供稿:網友

適配器模式是php設計模式中的一個常用的模式了,很多朋友對于這個適配器模式不了解,下面小編和各位介紹一下吧,希望對大家幫助.

適配器模式有什么用?

將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原來由于接口不兼容而不能一起工作的那此類可以一起工作

適用性

1、你想使用一個已經存在的類,而它的接口不符合你的需求

2、你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類協同工作

3、你想使用一個已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口(僅限于對象適配器)

應用舉例,例如PHP的數據庫操作有MySQL、Mssql、PDO等,可以用適配器模式統一成一致。類似的場景還有cache適配器,將memcache、redis、file、apc等不同的緩存函數,統一成一致。

接下來我們以數據庫操作來舉例,為了編輯方便,博主就把代碼都寫一起了

<?php
/**
 * PHP設計模式之適配器模式實例
 *
 */
 
/**
 * 目標角色
 * 創建一個接口文件 DataBase.php
 * 定義一個數據庫接口
 * 聲明方法
 */
interface IDataBase {
    public function connect($host, $user, $passwd, $dbname);
    public function query($sql);
    public function close();
}
/**
 * 源角色
 */
class Adaptee {
 
    /**
     * 源類含有的方法
     */
    public function connect($host, $user, $passwd, $dbname) {
        return 'Adaptee';
    }
}
 
/**
 * 類適配器角色
 * 創建mysql操作類文件 Mysql.php
 * 繼承接口 實現接口方法
 */
class Mysql implements IDataBase {
    private $_adaptee;
    function __construct() {  
        $this->_adaptee = new Adaptee();   
    }
    public function connect($host, $user, $passwd, $dbname){
        /**
         * code...
         * 委派調用Adaptee的connect方法
         */
        $this->_adaptee->connect($host, $user, $passwd, $dbname);
        //return 'ok';
    }
    public function query($sql){
        /**
         * code...
         */
        return 'ok';
    }
    public function close(){
        /**
         * code...
         */
        return 'ok';
    }
}
 
/**
 * 類適配器角色
 * 創建mssql操作類文件 Mssql.php
 * 繼承接口 實現接口方法
 */
class Mssql implements IDataBase {
    public function connect($host, $user, $passwd, $dbname){  
        /**
         * code...
         */
        return 'ok';
    }
    public function query($sql){
        /**
         * code...
         */
        return 'ok';
    }
    public function close(){
        /**
         * code...
         */
        return 'ok';
    }
}
/**
 * 類適配器角色
 * 創建pdo操作類文件 Pdo.php
 * 繼承接口 實現接口方法
 */
class Pdfo implements IDataBase {
    public function connect($host, $user, $passwd, $dbname){  
        /**
         * code...
         */
        return 'ok';
    }
    public function query($sql){
        /**
         * code...
         */
        return 'ok';
    }
    public function close(){
        /**
         * code...
         */
        return 'ok';
    }
}
/**
 * 使用
 * 這樣就可以任意的在三種適配器之間進行切換
 */
$db = new Mysql();
echo $db->connect('127.0.0.1', 'root', 'root', 'test');
echo $db->query('show databases');
echo $db->close();
?>

博主也參考了網上一些示例,總覺得寫的也不明確,直到寫完這篇,博主依舊疑惑。不知道我的理解是否正確,看過之后的朋友還望指點一二。

好了,今兒就到這,更多深入信息可以自己去網上找,或者查看相關書籍

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 特克斯县| 道真| 澎湖县| 西青区| 宝鸡市| 瓮安县| 铁岭市| 巩留县| 曲沃县| 名山县| 龙口市| 昌宁县| 漳浦县| 昆明市| 新密市| 灌云县| 华亭县| 兴业县| 雷州市| 武鸣县| 铜陵市| 丰台区| 嘉义县| 伊金霍洛旗| 吉木乃县| 讷河市| 永靖县| 汶上县| 双桥区| 广南县| 巴东县| 南召县| 咸丰县| 新巴尔虎左旗| 内江市| 大冶市| 水城县| 平乐县| 原阳县| 自贡市| 巢湖市|