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.
        }
    
    }
    

      

  • 相关阅读:
    英语:真正有效的英语学习心得,把英语当母语学习!(转载)
    《2010年年度总结》
    SQL游标使用
    千万数量级分页存储过程
    关于动态创建DOM元素的问题
    MVC3 “从客户端中检测到有潜在危险的 Request.QueryString或者Request.Form 值”问题解决
    记录Ally项目的点点滴滴(一)总结
    解决session丢失问题
    转载:我的外语学习历程(如何学会十门外语)
    C#经典问题总结一
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7787566.html
Copyright © 2011-2022 走看看