PHP简单装饰器模式实现与用法示例


Posted in PHP onJune 22, 2017

本文实例讲述了PHP简单装饰器模式实现与用法。分享给大家供大家参考,具体如下:

<?php
//装饰器模式-在不改变原有类的结构上,对类的功能那个作补充
//武器基类
abstract class Weapon{
  abstract public function descriptions();
  abstract public function cost();
}
//剑类
class Glave extends Weapon{
  public function descriptions(){
    return 'Glave';
  }
  public function cost(){
    return "100";
  }
}
//匕首类
class Knife extends Weapon{
  public function descriptions(){
    return __CLASS__;
  }
  public function cost(){
    return "80";
  }
}
//斧类
class Axe extends Weapon{
  public function descriptions(){
    return __CLASS__;
  }
  public function cost(){
    return "200";
  }
}
//属性类
class Property extends Weapon{
  protected $_weapon = null;
  protected $_price = 0;
  protected $_descriptions = '';
  public function __construct(Weapon $weapon){
    $this->_weapon = $weapon;
  }
  public function cost(){
    return   $this->_weapon->cost() + $this->_price;
  }
  public function descriptions(){
    return $this->_weapon->descriptions().$this->_descriptions;
  }
}
//力量属性
class Strength extends Property{
  protected $_price = 30;
  protected $_descriptions = '+ Strength';
}
//敏捷属性
class Agility extends Property{
  protected $_price = 50;
  protected $_descriptions = '+ Agility';
}
//智力属性
class Intellect extends Property{
  protected $_price = 20;
  protected $_descriptions = '+ Intellect';
}
$weapon = new Agility(new Strength(new Strength(new Glave())));
echo $weapon->cost();
echo $weapon->descriptions();

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
?算你??的 PHP 程式大小
Dec 06 PHP
php5中类的学习
Mar 28 PHP
PHP 数组实例说明
Aug 18 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
PHP实现的简单适配器模式示例
Jun 22 #PHP
php smtp实现发送邮件功能
Jun 22 #PHP
php实现页面纯静态的实例代码
Jun 21 #PHP
详解php实现页面静态化原理
Jun 21 #PHP
PHP实现的观察者模式实例
Jun 21 #PHP
PHP构造二叉树算法示例
Jun 21 #PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 #PHP
You might like
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
Open and Print a Word Document
2007/06/15 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
python try...finally...的实现方法
2020/11/25 Python
python实现按日期归档文件
2021/01/30 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
文史专业毕业生自荐信
2013/11/17 职场文书
毕业自荐书
2013/12/09 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
检举信的格式及范文
2014/04/04 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
跳高加油稿
2015/07/21 职场文书
团队拓展训练感想
2015/08/07 职场文书
如何用python插入独创性声明
2021/03/31 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
Python+Tkinter制作专属图形化界面
2022/04/01 Python
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript