-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathstructural-facade.php
More file actions
102 lines (87 loc) · 2.36 KB
/
structural-facade.php
File metadata and controls
102 lines (87 loc) · 2.36 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
/**
* This example just to simulate how Facade can be work
* 2nees.com
*/
/**
* Class SocialMediaFacade - Facade Class
*/
class SocialMediaFacade {
protected Facebook $facebook;
protected Twitter $twitter;
protected LinkedIn $linkedIn;
/**
* SocialMediaFacade constructor.
*/
public function __construct()
{
$this->facebook = new Facebook();
$this->twitter = new Twitter();
$this->linkedIn = new LinkedIn();
}
/**
* Set Messages
* @param $message
*/
public function setMessage($message): void {
$this->facebook->setMessage($message);
$this->twitter->setMessage($message);
$this->linkedIn->setMessage($message);
}
/**
* Share messages for all providers
*/
public function share(): void {
$this->facebook->share();
$this->twitter->share();
$this->linkedIn->share();
}
}
#region Simulate Complex Subsystem
abstract class SocialMedia {
protected string $message;
public function setMessage(string $message): void
{
$this->message = $message;
}
abstract public function share(): void;
}
class Facebook extends SocialMedia {
public function share(): void
{
echo "Facebook Shared this message: {$this->message}" . PHP_EOL;
}
}
class Twitter extends SocialMedia {
public function share(): void
{
echo "Twitter Shared this message: {$this->message}" . PHP_EOL;
}
}
class LinkedIn extends SocialMedia {
public function share(): void
{
echo "LinkedIn Shared this message: {$this->message}" . PHP_EOL;
}
}
#endregion
// Client Script
$message = "2nees.com Facade Design Pattern.";
// Old Way (Before use Facade)
$facebook = new Facebook();
$facebook->setMessage($message);
$facebook->share();
$twitter = new Twitter();
$twitter->setMessage($message);
$twitter->share();
$linkedIn = new LinkedIn();
$linkedIn->setMessage($message);
$linkedIn->share();
echo "==================================================" . PHP_EOL;
// New Way (After use Facade)
$facade = new SocialMediaFacade();
$facade->setMessage("{$message} (We Are Using Facade Now)");
$facade->share();
echo "===================Send Again Its Easy===============================" . PHP_EOL;
$facade->setMessage("Send Again Its Very Easy: {$message} (We Are Using Facade Now)");
$facade->share();