• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP设计模式–适配器模式

php 搞代码 4年前 (2022-01-23) 15次浏览 已收录 0个评论

声明:本系列博客参考资料《大话设计模式》,作者程杰。

适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

类图:

待适配(ForeignPlayer)角色:此角色的接口规则内部的接口规则不一致,但内部需要调用该角色的方法功能。

内部接口(IPlayer)角色:这是一个抽象角色,此角色给出内部期待的接口规则。

适配器(Adapter)角色:通过在内部包装一个Adapter对象,把待适配接口转换成目标接口,此角色为适配器模式的核心角色,也是适配器模式所解决问题的关键。

代码:

<?php/** * Created by PhpStorm. * User: Jiang * Date: 2015/4/26 * Time: 12:23 *///-------------抽象接口---------------/**抽象运动员 * Interface IPlayer */interface IPlayer{    function Attack();    function Defense();}/**前锋 * Class Forward */class Forward implements IPlayer{    function Attack()    {        echo "前锋攻击
"; } function Defense() { echo "前锋防御
"; }}/**中锋 * Class Center */class Center implements IPlayer{ function Attack() { echo "中锋攻击
"; } function Defense() { echo "中锋防御
"; }}//--------------待适配对象-----------/**姚明 外籍运动员 * Class Yaoming */class Yaoming{ function 进攻() { echo "姚明进攻
"; } function 防御() { echo "姚明防御
"; }}//------------适配器--------------/**适配器 * Class Adapter */class Adapter implements IPlayer{ private $_player; function __construct() { $this->_player=new Yaoming(); } function Attack() { $this->_player->进攻(); } function Defense() { $this->_player->防御(); }}

客户端测试代码:

header("Content-Type:text/html;charset=utf-8");//------------------------原型模式测试代码------------------require_once "./Adapter/Adapter.php";$player1=new Forward();echo "前锋上场:
";$player1->Attack();$player1->Defense();echo "

";echo "姚明上场:
";$yaoming=new Adapter();$yaoming->Attack();$yaoming->Defens2本文来源gao*daima.com搞@代#码&网6
搞gaodaima代码

e();

适用场景

1.接口中规定了所有要实现的方法

2.但要有一个实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。

注意事项

1.充当适配器角色的类就是实现已有接口的抽象类

2.为什么要用抽象类:

此类是不要被实例化的。而只充当适配器的角色,也就为其子类提供了一个共同的接口,但其子类又可以将精力只集中在其感兴趣的地方。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP设计模式–适配器模式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址