这篇文章主要介绍了php设计模式之适配器模式,结合星际争霸游戏案例形式分析了PHP适配器模式相关原理、用法及操作注意事项,需要的朋友可以参考下
本文实例讲述了php设计模式之适配器模式。分享给大家供大家参考,具体如下:
星际的很多兵种,都有至少一项特殊技能。而且有些兵种的技能是相同的,比如虫族部队都会恢复血。
如果按照一般的思路,把技能的操作和控制作为方法,放在每个兵种的定义类来实现,代码会重复,也不容易修改。
那我们就会考虑用继承的办法,比如我们可以设计一个虫族的基类,里面有受伤后血恢复的方法。
在设计刺蛇(Hydralisk,口水兵)的时候,我们可以让刺蛇类继承虫族基类。
但是刺蛇是可以研发钻地的,而钻地不是刺蛇独有的功能,是虫族地面部队都有的特点,我们也要把钻地作为公共基类。
问题出来了,我们不能同时让刺蛇类继承两个类,这是php不允许的。
待解决的问题:如何混合重用两个类,
思路:继承一个类,把新建其中一个类的对象作为属性,然后通过这个属性来调用第二个类的方法。
适配器(Adapter)模式示例:
<?php
//虫族基类
class Zerg
{
//血
public $blood;
//恢复血的方法
public function restoreBlood()
{
//自动逐渐恢复兵种的血
}
}
//钻地的类
class Burrow
{
//钻地的方法
public function burrowOperation()
{
//钻地的动作,隐形等等
echo '我钻地了';
}
}
//刺蛇的类
class Hydralisk extends Zerg
{
//把一个属性来存放钻地对象
public $burrow;
//构造方法,因为php不允许默认值采用对象,所以通过初始化赋值给$burrow
public function __construct()
{
$this->burrow=new Burrow();
}
//钻地的方法
public function burrowOperation()
{
//调用钻地属性存放的对象,使用钻地类的方法
$this->burrow->burrowOperation();
}
}
//制造一个刺蛇
$h1 = new Hydralisk();
//让他钻地
$h1->burrowOperation();
//运行输出:我钻地了
?>
用途总结:适配器模式使得一个类可以同时使用两个基础类的功能,跳出了单纯继承的限制。有效的重用多各类。
实现总结:让新的类去继承一个基础类,然后通过新类的属性来存放其他类的对象,通过这些对象来调用其他类的方法.
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
本文标题为:php设计模式之适配器模式实例分析【星际争霸游戏案例】
基础教程推荐
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09
- PHP中的错误及其处理机制 2023-06-04
- php array分组,PHP中array数组的分组排序 2022-08-01
- PHP命名空间简单用法示例 2022-12-01
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08
- PHP实现Redis单据锁以及防止并发重复写入 2022-10-12
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19
- 使用PHP开发留言板功能 2023-03-13