温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

适配器模式的php实例

发布时间:2020-10-29 14:13:13 来源:亿速云 阅读:123 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关适配器模式的php实例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

 适配器模式 (Adapter Pattern)

Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。

适配器模式应用场景

在大规模的系统开发过程中,我们常常碰到诸如以下这些情况:

我们需要实现某些功能,这些功能已有还不太成熟的一个或多个外部组件,如果我们自己重新开发这些功能会花费大量时间;所以很多情况下会选择先暂时使用外部组件,以后再考虑随时替换。但这样一来,会带来一个问题,随着对外部组件库的替换,可能需要对引用该外部组件的源代码进行大面积的修改,因此也极可能引入新的问题等等。如何最大限度的降低修改面呢?Adapter模式就是针对这种类似需求而提出来的。Adapter模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替换外部组件时,最多只要修改几个Adapter类就可以了,其他源代码都不会受到影响。

php实例

假设我们有一个文章类已经完成了文章的列表及详细信息展示工作:

<?php
class article{
//文章列表获取方法
public function getLIst(){
echo '获取文章列表';
}
//根据文章id获取文章的标题和内容
public function getInfo($id){
echo '根据文章id获取文章的标题和内容';
}
}
$art = new article();
$art->getInfo(1);

由于项目的需要,现在需要这样的一个功能。获取文章细节时还需要获取文章的创建时间,并需要更新文章的阅读次数。

如果不使用适配器模式我们首先想到的时修改article类的源代码增加这样的功能。之所以这样想是因为上面的例子代码很简单,如果他是上千行呢?如果getInfo()代码非常复杂呢?

使用适配器模式来解决这一切吧!

class articleAdapter{
public $_artObj;
public function __construct($artObj){
$this->_artObj = $artObj;
}
public function getInfo($id){
$this->_artObj->getInfo($id);
}
public function getInfoAndUpdate($id){
//利用$this->_artObj查询符合要求的文章数据并更新浏览次数
echo '$this->_artObj查询符合要求的文章数据并更新浏览次数';
}
}
$art = new articleAdapter(new article());
$art->getInfo(12);
$art->getInfoAndUpdate(12);

为什么不使用继承?

对象适配器:不是通过继承的方式,而是通过对象组合的方式来进行处理的,我们只要学过OO的设计原则的都知道,组合相比继承是推荐的方式。

类适配器:通过继承的方式来实现,将旧系统的方法进行封装。对象适配器在进行适配器之间的转换过程中,无疑类适配器也能完成,但是依赖性会加大,并且随着适配要求的灵活性,可能通过继承膨胀的难以控制。

一般来说类适配器的灵活性较差,对象适配器较灵活,是我们推荐的方式,可以通过依赖注入的方式,或者是配置的方式来做。类适配器需要继承自要适配的旧系统的类,无疑这不是一个好的办法。

感谢各位的阅读!关于适配器模式的php实例就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI