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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
isset和empty的区别
Jan 15 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
php计算当前程序执行时间示例
Apr 24 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
php清除和销毁session的方法分析
Mar 19 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
php提高脚本性能的4个技巧
Aug 18 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
用JS实现的一个include函数
2007/07/21 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
JS实现吸顶特效
2020/01/08 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
Python制作exe文件简单流程
2019/01/24 Python
Python列表(List)知识点总结
2019/02/18 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题