• 适配器模式


    转自 http://www.cnblogs.com/fancing/p/6394206.html

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

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

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

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

     1 /*驱动接口*/
     2 interface db_driver {
     3         function connect();
     4     function query();
     5 }
     6 
     7 /*mysql的数据库实现*/
     8 class db_mysql implements db_driver {
     9     
    10     public function connect() {
    11         /*具体代码实现*/
    12     }
    13     
    14     function query($sql) {
    15                 /*具体代码实现*/
    16     }
    17 }
    18 /*pdo的数据库实现*/
    19 class db_pdo implements db_driver {
    20     
    21     public function connect() {
    22         /*具体代码实现*/
    23     }
    24     
    25     function query($sql) {
    26                 /*具体代码实现*/
    27     }
    28 }
    29 /*定义适配器类*/
    30 class db_adapter {
    31 
    32     private $db;
    33     
    34     function __construct($db_obj) {
    35         $this->db = $db_obj;
    36     }
    37     
    38     function connect() {
    39         $this->db->connect();
    40     }
    41     
    42     function query($sql) {
    43         $this->db->query($sql);
    44     }
    45 }
    46 /*客户端应用*/
    47 $db = new db_adapter(new db_mysql());
  • 相关阅读:
    ecshop 调用指定分类的推荐,热卖,新品
    ecshop 首页调用指定类产品
    html常用笔记
    ecshop 修改flash图片大小
    ecshop 删除随机版权
    Java Web(一) Servlet详解!!
    Git使用总结
    git clone命令使用
    Lucene学习总结之四:Lucene索引过程分析
    Lucene学习总结之二:Lucene的总体架构
  • 原文地址:https://www.cnblogs.com/yuanlipu/p/6435743.html
Copyright © 2020-2023  润新知