浅析php适配器模式(Adapter)


Posted in PHP onNovember 25, 2014

前几篇介绍了设计模式的特性并且详细讲解了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 文章调用类代码
Aug 11 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php遍历数组的4种方法总结
Jul 05 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP7数组的底层实现示例
Aug 25 PHP
php传值和传引用的区别点总结
Nov 19 PHP
浅析php原型模式
Nov 25 #PHP
浅析php创建者模式
Nov 25 #PHP
浅析php工厂模式
Nov 25 #PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 #PHP
浅析php单例模式
Nov 25 #PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 #PHP
php字符串截取函数用法分析
Nov 25 #PHP
You might like
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
php5 pdo新改动加载注意事项
2008/09/11 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
php把session写入数据库示例
2014/02/26 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
js实现购物车功能
2018/06/12 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Python devel安装失败问题解决方案
2020/06/09 Python
汉森批发:Hansen Wholesale
2018/05/24 全球购物
自我评价正确写法范文
2013/12/10 职场文书
员工评语大全
2014/01/19 职场文书
说明书范文
2014/05/07 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
2015毕业寄语大全
2015/02/26 职场文书
稽核岗位职责范本
2015/04/13 职场文书
物业保安辞职信
2015/05/12 职场文书
首席执行官观后感
2015/06/03 职场文书
小学毕业感言100字
2015/07/30 职场文书
python xlwt模块的使用解析
2021/04/13 Python
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技