-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathProgram.cs
78 lines (67 loc) · 1.32 KB
/
Program.cs
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
using System;
namespace FacadePattern
{
class Computer
{
public void GetElectricShock()
{
Console.Write("Ouch!");
}
public void MakeSound()
{
Console.Write("Beep beep!");
}
public void ShowLoadingScreen()
{
Console.Write("Loading..");
}
public void Bam()
{
Console.Write("Ready to be used!");
}
public void CloseEverything()
{
Console.Write("Bup bup bup buzzzz!");
}
public void Sooth()
{
Console.Write("Zzzzz");
}
public void PullCurrent()
{
Console.Write("Haaah!");
}
}
class ComputerFacade
{
private readonly Computer mComputer;
public ComputerFacade(Computer computer)
{
this.mComputer = computer ?? throw new ArgumentNullException("computer", "computer cannot be null");
}
public void TurnOn()
{
mComputer.GetElectricShock();
mComputer.MakeSound();
mComputer.ShowLoadingScreen();
mComputer.Bam();
}
public void TurnOff()
{
mComputer.CloseEverything();
mComputer.PullCurrent();
mComputer.Sooth();
}
}
class Program
{
static void Main(string[] args)
{
var computer = new ComputerFacade(new Computer());
computer.TurnOn(); // Ouch! Beep beep! Loading.. Ready to be used!
Console.WriteLine();
computer.TurnOff(); // Bup bup buzzz! Haah! Zzzzz
Console.ReadLine();
}
}
}