File tree Expand file tree Collapse file tree 2 files changed +84
-0
lines changed Expand file tree Collapse file tree 2 files changed +84
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ /**
4
+ * Design pattern "Composite" (Structural)
5
+ * This is demo code
6
+ * See for details: http://maxsite.org/page/php-patterns
7
+ */
8
+
9
+ /**
10
+ * Composite methods
11
+ */
12
+ interface CompositeInterface
13
+ {
14
+ public function run ();
15
+ }
16
+
17
+ /**
18
+ * Composite run
19
+ */
20
+ class Composite implements CompositeInterface
21
+ {
22
+ private $ classes ;
23
+
24
+ /**
25
+ * Add class to list
26
+ */
27
+ public function addClass (CompositeInterface $ class )
28
+ {
29
+ $ this ->classes [] = $ class ;
30
+ }
31
+
32
+ /**
33
+ * running all classes
34
+ */
35
+ public function run ()
36
+ {
37
+ foreach ($ this ->classes as $ class ) {
38
+ $ class ->run ();
39
+ }
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Demo Class1
45
+ */
46
+ class Class1 implements CompositeInterface
47
+ {
48
+ public function run ()
49
+ {
50
+ echo 'Class1 run <br> ' ;
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Demo Class2
56
+ */
57
+ class Class2 implements CompositeInterface
58
+ {
59
+ public function run ()
60
+ {
61
+ echo 'Class2 run <br> ' ;
62
+ }
63
+ }
64
+
65
+ /**
66
+ * demo
67
+ */
68
+
69
+ // create Composite
70
+ $ a = new Composite ();
71
+
72
+ // add classes
73
+ $ a ->addClass (new Class1 ());
74
+ $ a ->addClass (new Class2 ());
75
+
76
+ // run all
77
+ $ a ->run ();
78
+ /*
79
+ Class1 run
80
+ Class2 run
81
+ */
82
+
83
+ # end of file
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ See details on http://maxsite.org/page/php-patterns
9
9
* "Singleton" (Creational)
10
10
* "Multiton" (Creational)
11
11
* "Registry" (Structural)
12
+ * "Composite" (Structural)
12
13
13
14
14
15
(c) MaxSite.org, 2019, http://maxsite.org/
You can’t perform that action at this time.
0 commit comments