地址:http://blog.csdn.net/zhaoxuejie/article/details/7092855

设计模式-使用php实现适配器模式

【概要】
结构型模式
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那此类可以一起工作【GOF95】

【结构图】

【主要角色】
目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的
源(Adaptee)角色:需要进行适配的接口
适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类
【适用性】
1、你想使用一个已经存在的类,而它的接口不符合你的需求
2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作
3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)

【单例模式php实例】

<?php/*** 适配器模式* -------------* @author         zhaoxuejie <zxj198468@gmail.com>* @package     design pattern * @version     v1.0 2011-12-14*///目标角色
interface Target {public function simpleMethod1();public function simpleMethod2();
}//源角色
class Adaptee {public function simpleMethod1(){echo 'Adapter simpleMethod1';}
}//类适配器角色
class Adapter implements Target {private $adaptee;function __construct(Adaptee $adaptee) {$this->adaptee = $adaptee; }//委派调用Adaptee的sampleMethod1方法public function simpleMethod1(){echo $this->adaptee->simpleMethod1();}public function simpleMethod2(){echo 'Adapter simpleMethod2';     } }//客户端
class Client {public static function main() {$adaptee = new Adaptee();$adapter = new Adapter($adaptee);$adapter->simpleMethod1();$adapter->simpleMethod2(); }
}Client::main();?>

php实现适配器模式(转)相关推荐

  1. 简书php硬件交互,php设计模式——适配器模式

    适配器模式 适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口.适配器让原本接口不兼容的类可以合作无间.列如:将数据库接口封装成一样的接口, 这样就可以适用于不同场景 案 ...

  2. 设计模式之适配器模式(Adapter)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  3. 给女友讲讲设计模式——适配器模式(JAVA实例)5

    前言 有这样一个人,看到别人一个个开餐馆赚了好多钱,于是自己也很想在餐饮业这方面大展拳脚,他从别人那里学到了他们的理念,还学习到了他们真正开店的经验.不但如此,他还引进了除了吃饭意外其他的服务,例如说 ...

  4. java设计模式-适配器模式

    模式导读:    每个人都有自己不同的需要,每个人都有自己能够接受的不同方式,就像是为满足现在快速度发展的社会,几乎人人离不开手机的时代,我们也许会碰到在外出行手机电量不足的情况,这个时候如果你在车站 ...

  5. 设计模式——6适配器模式(Adapter)

    6.适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器 ...

  6. C#设计模式(7)——适配器模式(Adapter Pattern)

    一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将"将现存的对象" ...

  7. Python设计模式-适配器模式

    Python设计模式-适配器模式 基于Python3.5.2,代码如下 #coding:utf-8class ACpnStaff:name = ""id = "" ...

  8. 步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)

    概述 在软件系统中,由于应用环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的.那么如何应对这种"迁移的变化&quo ...

  9. [Head First设计模式]身边的设计模式——适配器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  10. 简述事件接口与事件适配器的联系与区别_设计模式——适配器模式

    适配器模式 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper).适配器模式既可以作为类结构型模式,也 ...

最新文章

  1. Nat. Commun.速递:合群者有着相似的大脑活动
  2. java 控件内布局_Java开发桌面程序学习(二)————fxml布局与控件学习
  3. 扫描到服务器的文件在哪个文件夹,云服务器的文件在哪个文件夹
  4. HTTP协议和HTTPS协议初探
  5. VC++动态创建和删除菜单(转)
  6. java分割面板_Split 面板分割
  7. @staticmethod用法
  8. P3203-[HNOI2010]弹飞绵羊【分块】
  9. 莫名的证书错误...ERROR ITMS-90035:Invalid Signature.
  10. JavaScript学习(十)—练习:实现日历
  11. zedboard板子上呼吸灯的实现(第一版)
  12. Linux下查看系统版本号信息的方法(转)
  13. SLAM学习与求职经验分享_李阳阳
  14. Vue教程20:Vuex入门
  15. mysql 的相关操作_MySQL(记录相关操作)
  16. android桌面,Android Q带来全新桌面模式
  17. 流式传输 android,通过RTSP将视频流式传输至Android
  18. 分布式数据库TiDB在携程的实践
  19. CentOS7设置字符集为zh_CN.gbk
  20. 小白Nvidia TK1 Jetpack安装/重装系统详细步骤(小车第一步)

热门文章

  1. 加强版dd工具dc3dd
  2. Xamarin iOS教程之页面控件
  3. java 判断pc还是手机_java-判断是移动端还是PC端访问
  4. c语言输入数字变成星期几,C语言程序设计: 输入年月日 然后输出是星期几
  5. sap事务代码_SAP事务码太多,记不住怎么办?
  6. 得力人脸识别考勤机密码设置_百度大脑人脸识别公有云日均调用量过亿 成为业内第一...
  7. 用一维数组统计五个人的成绩中的最大值最小值平均值_昨天为了整理这份教程,我放弃了参加一个几亿人的大项目。...
  8. 利用脑机接口提高意念打字速度,让新手用户也能快速上手意念交流
  9. 手把手教你EMD算法原理与Python实现(更新)
  10. 魔改CNN揭秘宇宙大爆炸:物理学的核心是对称性