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 7b4dcdf

Browse files
committed
Bridge
1 parent 20f0e69 commit 7b4dcdf

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

‎Bridge/index.php

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
<?php
2+
3+
/**
4+
* Design pattern "Bridge" (Structural)
5+
* This is demo code
6+
* See for details: http://maxsite.org/page/php-patterns
7+
*/
8+
9+
/**
10+
* Available methods
11+
*/
12+
interface BridgeInterface
13+
{
14+
public function method1();
15+
public function method2();
16+
}
17+
18+
/**
19+
* implementation first
20+
*/
21+
class Bridge1 implements BridgeInterface
22+
{
23+
public function method1()
24+
{
25+
echo 'Bridge1 method1 <br>';
26+
}
27+
28+
public function method2()
29+
{
30+
echo 'Bridge1 method2 <br>';
31+
}
32+
}
33+
34+
/**
35+
* implementation second
36+
*/
37+
class Bridge2 implements BridgeInterface
38+
{
39+
public function method1()
40+
{
41+
echo 'Bridge2 method1 <br>';
42+
}
43+
44+
public function method2()
45+
{
46+
echo 'Bridge2 method2 <br>';
47+
}
48+
}
49+
50+
/**
51+
* main application Abstract
52+
*/
53+
abstract class AppAbstract
54+
{
55+
protected $bridge;
56+
57+
public function __construct(BridgeInterface $bridge)
58+
{
59+
$this->bridge = $bridge;
60+
}
61+
62+
public function method1()
63+
{
64+
$this->bridge->method1();
65+
}
66+
67+
public function method2()
68+
{
69+
$this->bridge->method2();
70+
}
71+
}
72+
73+
/**
74+
* main application
75+
*/
76+
class App extends AppAbstract
77+
{
78+
public function run()
79+
{
80+
$this->method1();
81+
$this->method2();
82+
}
83+
}
84+
85+
/**
86+
* demo
87+
*/
88+
89+
$a = new App(new Bridge1()); // application for Bridge1
90+
$a->run();
91+
/*
92+
Bridge1 method1
93+
Bridge1 method2
94+
*/
95+
96+
$b = new App(new Bridge2()); // application for Bridge2
97+
$b->run();
98+
/*
99+
Bridge2 method1
100+
Bridge2 method2
101+
*/
102+
103+
104+
# end of file

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ See details on http://maxsite.org/page/php-patterns
1515
* "Adapter" (Structural)
1616
* "Observer" (Behavioral)
1717
* "Prototype" (Creational)
18+
* "Bridge" (Structural)
1819

1920

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

0 commit comments

Comments
(0)

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