PHP デザイン パターン デコレーター パターン コード例_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:54:16
オリジナル
897 人が閲覧しました

PHP デザイン パターン デコレーター パターン コード例

この記事では、主に PHP デザイン パターン デコレーター パターン コード例を紹介します。 デコレーター パターンは、元のクラスのコードと継承を変更せずにクラスを動的に拡張する機能です。必要な友達はそれを参照できます

定義:

デコレーターパターンとは、元のクラスのコードや継承を変更することなく、クラスを動的に拡張する機能です。従来のプログラミング モデルでは、サブクラスが親クラスを継承してメソッドのオーバーロードを実装します。デコレータ パターンを使用すると、新しいデコレータ オブジェクトを追加するだけで済みます。これにより、より柔軟で、過剰なクラスや層を回避できます。

キャラクター:

コンポーネント(装飾されたオブジェクトの基本クラス)

ConcreteComponent(特定の装飾オブジェクト)

デコレータ(デコレータ基本クラス)

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

//デコレータ基本クラス

インターフェースコンポーネント

{

パブリック関数操作();

}

//デコレータ基本クラス

抽象クラス Decorator がコンポーネントを実装します

{

保護された $component;

パブリック関数 __construct(Component $component)

{

$this->component = $component;

}

パブリック関数操作()

{

$this->コンポーネント->operation();

}

}

//コンクリートデコレータークラス

クラス ConcreteComponent はコンポーネントを実装します

{

パブリック関数操作()

{

echo '操作を実行'.PHP_EOL;

}

}

//特定装飾カテゴリA

クラス ConcreteDecoratorA は Decorator を拡張します {

パブリック関数 __construct(Component $component) {

親::__construct($component);

}

パブリック関数操作() {

親::操作();

$this->addedOperationA() // 新しく追加されたオペレーション

;

}

パブリック関数 addedOperationA() {

echo '追加オペレーション A '.PHP_EOL;

}

}

//特定装飾タイプB

クラス ConcreteDecoratorB は Decorator を拡張します {

パブリック関数 __construct(Component $component) {

親::__construct($component);

}

パブリック関数操作() {

親::操作();

$this->addedOperationB();

}

パブリック関数 addedOperationB() {

echo '追加オペレーション B '.PHP_EOL;

}

}

クラスクライアント{

パブリック静的関数 main() {

/*

操作を行う

オペレーションAを追加

*/

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

$decoratorA->operation();

/*

操作を行う

オペレーションAを追加

オペレーションBを追加

*/

$decoratorB = 新しい ConcreteDecoratorB($decoratorA);

$decoratorB->operation();

}

}

クライアント::メイン();

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/998354.html技術記事 PHP 设计モードの装着者モード番号コード实例 この篇文章主要介绍了PHP 设计モードの装着者モード番号番号实例,装着者モードは不修正原类代码および继承的情况下...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!