zoukankan      html  css  js  c++  java
  • S1:适配器 Adapter

    将一个类的接口转换为用户期望的另外一个接口.适配器使得原本由于接口不兼容而不能一起工作的类可以一起工作  

    UML:

    一.类适配器:

    class A
    {
       public function methodA()
       {
        ..............
       }
    }
     
    class Adapter extends A
    {
       private $objectA;
        
       public function methodB()
       {
        echo 'Append data';
       }
    }
     
    调用:
     
    $a = new Adapter();
    $a->methodA();
    $a->methodB();
    

      

    二.对象适配器:

    const HOST = '127.0.0.1';
    const USER = 'root';
    const PASSWORD = 'root';
    const DB_NAME = 'test';
    
    interface Db
    {
        public function connect();
        public function select($sql);
    }
    
    class MysqlDb implements Db
    {
        protected  $conn;
    
        public function connect()
        {
            $this->conn = mysql_connect(HOST, USER, PASSWORD);
            mysql_select_db(DB_NAME, $this->conn);
        }
    
        public function select($sql)
        {
            $res = mysql_query($sql, $this->conn);
            $data = array();
            while ($row = mysql_fetch_assoc($res)) {
                $data[] = $row;
            }
            return $data;
        }
    }
    
    class MysqliDb implements Db
    {
        protected  $conn;
    
        public function connect()
        {
            $this->conn = mysqli_connect(HOST, USER, PASSWORD);
            mysqli_select_db($this->conn, DB_NAME);
        }
    
        public function select($sql)
        {
            $res = mysqli_query($this->conn, $sql);
            $data = array();
            while ($row = mysqli_fetch_assoc($res)) {
                $data[] = $row;
            }
            return $data;
        }
    }
    
    class DbAdapter
    {
        const MYSQL = 'MysqlDb';
        const MYSQLI = 'MysqliDb';
        protected  $db;
    
        public function __construct($type)
        {
            $this->db = new $type();
        }
    
        public function connectDb()
        {
            $this->db->connect();
        }
    
        public function select($sql)
        {
            return $this->db->select($sql);
        }
    }
    
    $db = new DbAdapter(DbAdapter::MYSQLI);
    $db->connectDb();
    var_dump($db->select("select * from test"));
    

      

    三.接口适配器

    要求现有类ExistClass适配接口DemoInterface

    现有类:
    
    class ExistClass
    {
    }
    
    interface DemoInterface
    {
        public function method();
    }
    
    // 适配的新类
    class NewClass extends ExistClass implements DemoInterface
    {
        public function method()
        {
            // TODO: Implement method() method.
        }
    
    }
    

      

  • 相关阅读:
    第七章习题G题
    第二周习题O题
    P4735 最大异或和
    P3008 [USACO11JAN]道路和飞机Roads and Planes
    P4009 汽车加油行驶问题
    P1073 最优贸易
    P2260 [清华集训2012]模积和
    P2865 [USACO06NOV]路障Roadblocks
    P1821 [USACO07FEB]银牛派对Silver Cow Party
    P4180 【模板】严格次小生成树[BJWC2010]
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7787566.html
Copyright © 2011-2022 走看看