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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
php中全局变量global的使用演示代码
May 18 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
Laravel 集成 Geetest验证码的方法
May 14 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
PHP4之真OO
2006/10/09 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
jcrop基本参数一览
2013/07/16 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
使用Python3制作TCP端口扫描器
2017/04/17 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
一道Delphi上机题
2012/06/04 面试题
真诚的求职信
2014/07/04 职场文书
考研英语复习计划
2015/01/19 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
感恩教师主题班会
2015/08/12 职场文书
离婚协议书范文2016
2016/03/18 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL