php设计模式之适配器模式实例分析【星际争霸游戏案例】
发布:smiling 来源: PHP粉丝网 添加日期:2022-02-26 08:23:02 浏览: 评论:0
本文实例讲述了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();
- //运行输出:我钻地了
- ?>
用途总结:适配器模式使得一个类可以同时使用两个基础类的功能,跳出了单纯继承的限制,有效的重用多各类。
实现总结:让新的类去继承一个基础类,然后通过新类的属性来存放其他类的对象,通过这些对象来调用其他类的方法。
Tags: php适配器模式 php星际争霸游戏
- 上一篇:php设计模式之迭代器模式实例分析【星际争霸游戏案例】
- 下一篇:最后一页
相关文章
- ·php设计模式之组合模式实例详解【星际争霸游戏案例】(2022-02-23)
- ·php设计模式之职责链模式实例分析【星际争霸游戏案例】(2022-02-23)
- ·php设计模式之观察者模式实例详解【星际争霸游戏案例】(2022-02-23)
- ·php设计模式之迭代器模式实例分析【星际争霸游戏案例】(2022-02-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)