デザインモード---アダプタモードとも言います


アダプタモードは最も理解しやすい設計モードの一つであり、応用も広く、一般的なアプリケーションシーンにはデータベースの下部接続のパッケージやキャッシュクラスの下部パッケージなどがあり、オープンソースプログラムでよく見られるフレームワークには、thinkphpのモジュール型ベースクラスパッケージのデータ接続などのアダプタモードのアプリケーションがある.私が自分のウェブサイト(www.ruanpower.com)のために設計したフレームワークLEAFMVCのモデル層パッケージデータベースにもアダプタモードが使われています.
アダプタは継承を利用して、同じインタフェースを露出します.
役割:インタフェースが互換性がないため、通常一緒に仕事をできないクラスが一緒に仕事をすることを許可し、共通のインタフェースを露出して呼び出すことができます.
構成方式:1つのインタフェース(露出された共通の方法を指定する)、いくつかの具体的な実現
擬似コードプレゼンテーション:mysqliデータベース接続またはpdoデータベース接続をシームレスに切り替えるプログラムを設計します.ビジネスロジックは下位データベースの接続方法を理解する必要はありません.dbオブジェクトメソッドを呼び出すだけでいいです.
//     
interface IDb {

    //     
    function connect();

    function query();

    function exec();

    function select();

    function insert();

    function delete();

    function update();
}
    //mysqli          
    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          
    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}
        }
        
    }
    //        
    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;
        }
        
        //       (     )
        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();