PHP设计模式之装饰者模式代码实例_PHP教程

WBOY
Release: 2016-07-13 09:54:16
Original
897 people have browsed it

PHP设计模式之装饰者模式代码实例

  这篇文章主要介绍了PHP设计模式之装饰者模式代码实例,装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能,本文就给出了代码实例,需要的朋友可以参考下

  定义:

  装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。

  角色:

  Component(被装饰对象基类)

  ConcreteComponent(具体被装饰对象)

  Decorator(装饰者基类)

  ContreteDecorator(具体的装饰者类)

  示例代码:

  ?

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

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

//被装饰者基类

interface Component

{

public function operation();

}

//装饰者基类

abstract class Decorator implements Component

{

protected $component;

public function __construct(Component $component)

{

$this->component = $component;

}

public function operation()

{

$this->component->operation();

}

}

//具体装饰者类

class ConcreteComponent implements Component

{

public function operation()

{

echo 'do operation'.PHP_EOL;

}

}

//具体装饰类A

class ConcreteDecoratorA extends Decorator {

public function __construct(Component $component) {

parent::__construct($component);

}

public function operation() {

parent::operation();

$this->addedOperationA(); // 新增加的操作

}

public function addedOperationA() {

echo 'Add Operation A '.PHP_EOL;

}

}

//具体装饰类B

class ConcreteDecoratorB extends Decorator {

public function __construct(Component $component) {

parent::__construct($component);

}

public function operation() {

parent::operation();

$this->addedOperationB();

}

public function addedOperationB() {

echo 'Add Operation B '.PHP_EOL;

}

}

class Client {

public static function main() {

/*

do operation

Add Operation A

*/

$decoratorA = new ConcreteDecoratorA(new ConcreteComponent());

$decoratorA->operation();

/*

do operation

Add Operation A

Add Operation B

*/

$decoratorB = new ConcreteDecoratorB($decoratorA);

$decoratorB->operation();

}

}

Client::main();

www.bkjia.com true http://www.bkjia.com/PHPjc/998354.html TechArticle PHP设计模式之装饰者模式代码实例 这篇文章主要介绍了PHP设计模式之装饰者模式代码实例,装饰者模式就是不修改原类代码和继承的情况下...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!