首页 > 后端开发 > php教程 > PHP装饰器模式的实现与用法详解

PHP装饰器模式的实现与用法详解

墨辰丷
发布: 2023-03-27 07:54:01
原创
1704 人浏览过

这篇文章主要介绍了PHP简单装饰器模式实现与用法,结合具体实例形式分析了php装饰器模式的原理、实现与使用方法,需要的朋友可以参考下

具体如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

<?php

//装饰器模式-在不改变原有类的结构上,对类的功能那个作补充

//武器基类

abstract class Weapon{

  abstract public function descriptions();

  abstract public function cost();

}

//剑类

class Glave extends Weapon{

  public function descriptions(){

    return &#39;Glave&#39;;

  }

  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 = &#39;&#39;;

  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 = &#39;+ Strength&#39;;

}

//敏捷属性

class Agility extends Property{

  protected $_price = 50;

  protected $_descriptions = &#39;+ Agility&#39;;

}

//智力属性

class Intellect extends Property{

  protected $_price = 20;

  protected $_descriptions = &#39;+ Intellect&#39;;

}

$weapon = new Agility(new Strength(new Strength(new Glave())));

echo $weapon->cost();

echo $weapon->descriptions();

登录后复制

相关推荐:

PHP装饰器模式使用详解

PHP装饰器模式使用案例分析

Python装饰器原理与用法分析

以上是PHP装饰器模式的实现与用法详解的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
怎么学好php
来自于 1970-01-01 08:00:00
0
0
0
PHP扩展intl
来自于 1970-01-01 08:00:00
0
0
0
php数据获取?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板