-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
101 lines (85 loc) · 3.02 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using System;
using DecoratorProxyPattern.Decorator;
using DecoratorProxyPattern.Model;
using DecoratorProxyPattern.Repository;
namespace DecoratorProxyPattern
{
/// <summary>
/// Taken from
/// http://msdn.microsoft.com/en-us/magazine/dn574804.aspx
/// </summary>
class Program
{
static void Main(string[] args)
{
NoDecoratorNoProxy();
OneDecoratorNoProxy();
TwoDecoratorsNoProxy();
NoDecoratorTwoProxies();
}
private static void NoDecoratorNoProxy()
{
Console.WriteLine("***\r\n Begin program - no logging\r\n");
IRepository<Customer> customerRepository =
new Repository<Customer>();
var customer = new Customer
{
Id = 1,
Name = "Customer 1",
Address = "Address 1"
};
customerRepository.Add(customer);
customerRepository.Delete(customer);
Console.WriteLine("\r\nEnd program - no logging\r\n***");
Console.ReadLine();
}
private static void OneDecoratorNoProxy()
{
Console.WriteLine("***\r\n Begin program - logging with decorator\r\n");
IRepository<Customer> customerRepository =
new LoggerRepository<Customer>(new Repository<Customer>());
var customer = new Customer
{
Id = 1,
Name = "Customer 1",
Address = "Address 1"
};
customerRepository.Add(customer);
customerRepository.Delete(customer);
Console.WriteLine("\r\nEnd program - logging with decorator\r\n***");
Console.ReadLine();
}
private static void TwoDecoratorsNoProxy()
{
Console.WriteLine("***\r\n Begin program - no logging\r\n");
var customerRepository =
RepositoryFactory.CreateRepositoryWithDecorator<Customer>();
var customer = new Customer
{
Id = 1,
Name = "Customer 1",
Address = "Address 1"
};
customerRepository.Add(customer);
customerRepository.Delete(customer);
Console.WriteLine("\r\nEnd program - no logging\r\n***");
Console.ReadLine();
}
private static void NoDecoratorTwoProxies()
{
Console.WriteLine("***\r\n Begin program - logging with dynamic proxy\r\n");
var customerRepository =
RepositoryFactory.CreateRepositoryWithProxy<Customer>();
var customer = new Customer
{
Id = 1,
Name = "Customer 1",
Address = "Address 1"
};
customerRepository.Add(customer);
customerRepository.Delete(customer);
Console.WriteLine("\r\nEnd program - logging with dynamic proxy\r\n***");
Console.ReadLine();
}
}
}