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 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
php学习之 循环结构实现代码
Jun 09 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
PHP工厂模式简单实现方法示例
May 23 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
jquery JSON的解析方式
2009/07/25 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
解决python线程卡死的问题
2019/02/18 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
一套Delphi的笔试题二
2013/05/11 面试题
法律专业学生的自我评价
2014/02/07 职场文书
社会实践活动报告
2015/02/05 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android