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获得当前的脚本网址
Dec 10 PHP
php中根据某年第几天计算出日期年月日的代码
Feb 24 PHP
php数组去重复数据示例
Feb 25 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 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
第六节--访问属性和方法
2006/11/16 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
PHP 验证码的实现代码
2011/07/17 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
python 控制语句
2011/11/03 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python上下文管理器和with块详解
2017/09/09 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
如何撰写岗位职责
2014/02/01 职场文书
体现团队精神的口号
2014/06/06 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
邀请函模板
2015/02/02 职场文书
大学生自荐书范文
2015/03/05 职场文书
大学生支教感言
2015/08/01 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
详解JS数组方法
2021/11/20 Javascript