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
php 动态多文件上传
Jan 18 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
php实现自动获取生成文章主题关键词功能的深入分析
Jun 03 PHP
解析CodeIgniter自定义配置文件
Jun 18 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
PHP如何将XML转成数组
Apr 04 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php生成图片缩略图的方法
2015/04/07 PHP
PHP可变变量学习小结
2015/11/29 PHP
Yii rules常用规则示例
2016/03/15 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
javascript实现日历效果
2019/06/17 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现QQ空间自动点赞功能
2019/04/09 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
数控加工专业毕业生自荐信
2013/09/27 职场文书
医学生实习自荐信
2013/10/01 职场文书
采购内勤岗位职责
2013/12/10 职场文书
消防宣传口号
2014/06/16 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
2015年教师国培感言
2015/08/01 职场文书
六五普法心得体会2016
2016/01/21 职场文书
2019各种承诺书范文
2019/06/24 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
Python中npy和mat文件的保存与读取
2022/04/24 Python