-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
85 lines (73 loc) · 1.86 KB
/
Program.cs
File metadata and controls
85 lines (73 loc) · 1.86 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
using System;
namespace DependencyInjection
{
public interface ISaw{
void Cut();
}
public interface IHammer
{
void Nail();
}
public class Saw : ISaw
{
public void Cut()
{
Console.WriteLine("Using saw to cut wood.");
}
}
public class Hammer : IHammer
{
public void Nail()
{
Console.WriteLine("Using hammer to nail wood.");
}
}
public class ElectricSaw : ISaw
{
public void Cut()
{
Console.WriteLine("Using electric saw to cut wood faster.");
}
}
public class RubberHammer : IHammer
{
public void Nail()
{
Console.WriteLine("Using rubber hammer, gentler on surfaces.");
}
}
public class Builder
{
private readonly ISaw _saw;
private readonly IHammer _hammer;
public Builder(ISaw saw, IHammer hammer)
{
_saw = saw;
_hammer = hammer;
}
public void Build()
{
_saw.Cut();
_hammer.Nail();
Console.WriteLine("Building the house.");
}
}
class Program
{
static void Main(string[] args)
{
ISaw saw = new Saw();
IHammer hammer = new Hammer();
Builder builder = new Builder(saw, hammer);
Console.WriteLine("Building with original tools:");
builder.Build();
Console.WriteLine();
ISaw electricSaw = new ElectricSaw();
IHammer rubberHammer = new RubberHammer();
Builder builderWithNewTools = new Builder(electricSaw, rubberHammer);
Console.WriteLine("Building with swapped (alternative) tools:");
builderWithNewTools.Build();
Console.WriteLine("Done!");
}
}
}