本文实例讲述了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 '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程序设计有所帮助。