浅析php适配器模式(Adapter)

 更新时间:2014年11月25日 14:49:25   投稿:hebedich  
本文讲解的是php设计模式的结构性模式的概念以及机构性模式的七种类中的适配器模式,需要的朋友可以参考下

前几篇介绍了设计模式的特性并且详细讲解了4种创建型模式,创建型模式是负责如何产生对象实例的,接下来讲讲结构型模式。

一、什么是结构型模式

结构型模式是解析类和对象的内部结构和外部组合,通过优化程序结构解决模块之间的耦合问题。

二、结构型模式的种类

适配器模式
桥接模式
装饰模式
组合模式
外观模式
享元模式
代理模式

1、 适配器模式(Adapter)
将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本的由于接口不兼容而不能一起工作的那些类可以一起工作。
应用场景:老代码接口不适应新的接口需求,或者代码很多很乱不便于继续修改,或者使用第三方类库。

代码实现

复制代码 代码如下:

//老的代码    
class User {   
    private $name;   
    function __construct($name) {   
        $this->name = $name;   
    }   
    public function getName() {   
        return $this->name;   
    }   
}   

//新代码,开放平台标准接口   
interface UserInterface {   
    function getUserName();   
}   
class UserInfo implements UserInterface {   
    protected $user;   
    function __construct($user) {   
        $this->user = $user;   
    }   
    public function getUserName() {   
        return $this->user->getName();   
    }   
}   

$olduser = new User('张三');   
echo $olduser->getName()."n";   
$newuser = new UserInfo($olduser);   
echo $newuser->getUserName()."n";   

 注意点:这里的新接口使用了组合方式,UserInfo内部有一个成员变量保存老接口User对象,模块之间是松耦合的,这种结构其实就是组合模式。不要使用继承,虽然UserInfo继承User也能达到同样的目的,但是耦合度高,相互产生影响。

以上就是关于php设计模式中结构性模式中的适配器模式的全部内容了,小伙伴们是否了解清楚了呢,有问题就给我留言吧

相关文章

  • PHP获取时间排除周六、周日的两个方法

    PHP获取时间排除周六、周日的两个方法

    这篇文章主要介绍了PHP获取时间排除周六、周日的两个方法,应用在特殊场合,需要的朋友可以参考下
    2014-06-06
  • Laravel实现登录跳转功能

    Laravel实现登录跳转功能

    网站管理员登录成功后跳转到网站后台,vip用户登录成功后跳转到vip页面,跳转功能怎么实现的呢,下面小编给大家带来了Laravel实现登录跳转功能,需要的朋友可以参考下
    2021-08-08
  • php多文件打包下载的实例代码

    php多文件打包下载的实例代码

    本篇文章主要介绍了php多文件打包下载的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • php之php.ini配置文件讲解案例

    php之php.ini配置文件讲解案例

    这篇文章主要介绍了php之php.ini配置文件讲解案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法

    php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法

    这篇文章主要介绍了php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法的相关资料,需要的朋友可以参考下
    2016-03-03
  • PHP开发微信支付的代码分享

    PHP开发微信支付的代码分享

    最近一直在研究微信,不研究不知道,一研究下一跳啊,微信真的可以做太多事情了,先来看下微信支付的开发心得吧,以后会慢慢补全其他方面的开发代码
    2014-05-05
  • php版微信公众平台接口参数调试实现判断用户行为的方法

    php版微信公众平台接口参数调试实现判断用户行为的方法

    这篇文章主要介绍了php版微信公众平台接口参数调试实现判断用户行为的方法,可判断出用户订阅、取消订阅、发送信息等行为,涉及微信公众平台接口参数调试的相关操作技巧,需要的朋友可以参考下
    2016-09-09
  • PHP实现微信申请退款流程实例代码

    PHP实现微信申请退款流程实例代码

    本篇文章给大家介绍php实现微信申请退款流程,使用到官方提供的SDK中的最重要的一个类文件WxPay.Api.php中提供的refund()方法来实现的,完整大家大家参考下本文
    2018-03-03
  • PHP中token的生成案例

    PHP中token的生成案例

    这篇文章主要介绍了PHP中token的生成案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • thinkphp5使用无限极分类

    thinkphp5使用无限极分类

    这篇文章主要为大家详细介绍了thinkphp5使用无限极分类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02

最新评论