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调用三种数据库的方法(1)
Oct 09 PHP
PHP脚本的10个技巧(5)
Oct 09 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
php生成静态页面的简单示例
Apr 17 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php获取本周开始日期和结束日期的方法
Mar 09 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
php实现图片按比例截取的方法
Feb 06 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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中其他类型转化为Bool类型
2016/03/28 PHP
laravel学习教程之关联模型
2016/07/30 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
python如何为被装饰的函数保留元数据
2018/03/21 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
python学生信息管理系统实现代码
2019/12/17 Python
什么是python的id函数
2020/06/11 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
小学少先队活动方案
2014/02/18 职场文书
电子商务求职信
2014/06/15 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
上课迟到检讨书
2015/05/06 职场文书
班级联欢会主持词
2015/07/03 职场文书
公司员工奖惩制度
2015/08/04 职场文书
交通安全主题班会
2015/08/12 职场文书