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的面试题集
Nov 19 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
php array_intersect()函数使用代码
Jan 14 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
PHP实现git部署的方法教程
Dec 19 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP实现随机发放扑克牌
Apr 21 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微信公众号开发之秒杀
2018/10/20 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
python正则表达式实例代码
2020/03/03 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
一份婚庆公司创业计划书
2014/01/11 职场文书
六一亲子活动总结
2014/07/01 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
教师读书活动心得体会
2016/01/14 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python