Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f142283

Browse files
committed
Composite
1 parent 58436e0 commit f142283

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

‎Composite/index.php

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
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

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ See details on http://maxsite.org/page/php-patterns
99
* "Singleton" (Creational)
1010
* "Multiton" (Creational)
1111
* "Registry" (Structural)
12+
* "Composite" (Structural)
1213

1314

1415
(c) MaxSite.org, 2019, http://maxsite.org/

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /