首页 / 设计模式 / PHP设计模式--适配器模式
PHP设计模式--适配器模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP设计模式--适配器模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2449字,纯文字阅读大概需要4分钟。
内容图文
![PHP设计模式--适配器模式](/upload/InfoBanner/zyjiaocheng/203/ff876f2660b44428bee73a0d559eddcc.jpg)
适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
类图:
待适配(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->Defense();
适用场景
1.接口中规定了所有要实现的方法
2.但要有一个实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。
注意事项
1.充当适配器角色的类就是实现已有接口的抽象类
2.为什么要用抽象类:
此类是不要被实例化的。而只充当适配器的角色,也就为其子类提供了一个共同的接口,但其子类又可以将精力只集中在其感兴趣的地方。
内容总结
以上是互联网集市为您收集整理的PHP设计模式--适配器模式全部内容,希望文章能够帮你解决PHP设计模式--适配器模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。