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 array_slice函数的使用以及参数详解
Aug 30 PHP
php正则表达式(regar expression)
Sep 10 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
浅谈PHP中的Trait使用方法
Mar 22 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 301转向实现代码
2008/09/18 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python用for循环求和的方法总结
2019/07/08 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
运动会稿件300字
2014/02/14 职场文书
农村葬礼主持词
2014/03/31 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
董事长新年致辞
2015/07/29 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python