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重定向的3种方式
Mar 07 PHP
深入解析php之apc
May 15 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
php写入文件不覆盖的实例讲解
Sep 17 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
分享php邮件管理器源码
2016/01/06 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
写了个监控nginx进程的Python脚本
2012/05/10 Python
python使用百度翻译进行中翻英示例
2014/04/14 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
django和vue实现数据交互的方法
2019/08/21 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
易程科技软件测试笔试
2013/03/24 面试题
初中英语演讲稿
2014/04/29 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
鸟的天堂导游词
2015/01/31 职场文书
开除员工通知
2015/04/22 职场文书
消防演习感想
2015/08/10 职场文书
关于运动会的广播稿
2015/08/19 职场文书
民事纠纷协议书
2016/03/23 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android