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函数解决SQL injection
Dec 09 PHP
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
PHP多文件上传实例
Jul 09 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 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
Smarty使用自定义资源的方法
2015/08/08 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
python实现中文分词FMM算法实例
2015/07/10 Python
基于python指定包的安装路径方法
2018/10/27 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Python表达式的优先级详解
2020/02/18 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
管理失职检讨书
2014/02/12 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
社区交通安全实施方案
2014/03/22 职场文书
中班开学寄语
2014/04/04 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
公司副总经理任命书
2014/06/05 职场文书
图书馆标语
2014/06/19 职场文书
百日安全生产活动总结
2014/07/05 职场文书
个人授权委托书样本
2014/09/13 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技