zoukankan      html  css  js  c++  java
  • 大话设计模式之PHP篇

    定义
    将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作。

    角色
    Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口。
    Adaptee被适配者,就是需要被适配的接口。
    Adapter适配器,其他的两个角色都是已经存在的角色,而适配器角色是需要新建立的,它用来对Adaptee与Target接口进行适配。

    WEB应用
    适配器模式最常见的应用为数据库应用,一个web应用通常可能会使用不同的数据库驱动程序,比如mysql、mysqli、pdo、sqlite等,而整个web应用当中不可能针对每个数据库驱动,编写多种程序,对于web应用程序来讲,需要的是统一外部实现,而数据库驱动的内部实现则不关心。

    其实换成现实中的另一种说法:当你将程序完整的写结束时,你的客户突然说:听说pdo比mysql好,要不用pdo吧?客户笑眯眯的看着你,你傻乎乎的望着客户,哎,改吧!
    总不见得要所有代码都修改一遍吧,这时候适配器模式就派上了用场!

    /*驱动接口*/
    interface db_driver {
            function connect();
        function query();
    }
    
    /*mysql的数据库实现*/
    class db_mysql implements db_driver {
        
        public function connect() {
            /*具体代码实现*/
        }
        
        function query($sql) {
                    /*具体代码实现*/
        }
    }
    /*pdo的数据库实现*/
    class db_pdo implements db_driver {
        
        public function connect() {
            /*具体代码实现*/
        }
        
        function query($sql) {
                    /*具体代码实现*/
        }
    }
    /*定义适配器类*/
    class db_adapter {
    
        private $db;
        
        function __construct($db_obj) {
            $this->db = $db_obj;
        }
        
        function connect() {
            $this->db->connect();
        }
        
        function query($sql) {
            $this->db->query($sql);
        }
    }
    /*客户端应用*/
    $db = new db_adapter(new db_mysql());

    如果再增加其他的数据库驱动程序,只要根据接口标准增加新的类即可,客户端稍作改动即可!

  • 相关阅读:
    梅州惊魂~
    又寂寞又美好四月物语
    在 usercontrol中链接外部css文件和js文件的方法
    ResolveUrl的用法
    【转载】常见的敏捷开发流程比较
    Google 排名中的 10 个最著名的 JavaScript 库
    颜色大全:颜色名称和颜色值
    ASP.NET2.0中WEB应用程序的部署
    那些相见恨晚的 JavaScript 技巧
    .net网站发布总结之经验-允许更新此预编译站点(转载)
  • 原文地址:https://www.cnblogs.com/fancing/p/6394206.html
Copyright © 2011-2022 走看看