-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
123 lines (96 loc) · 4.53 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
namespace Strategy.Pattern
{
class Program
{
static void Main(string[] args)
{
#region Estrategy
// ####### TIPOS DE IMPOSTOS
//Orcamento orcamento = new Orcamento(500.0);
//CalculadorDeImposto calculadorDeImposto = new CalculadorDeImposto();
//double iss = calculadorDeImposto.RealizaCalculo(orcamento, new ISS());
//double icms = calculadorDeImposto.RealizaCalculo(orcamento, new ICMS());
//Console.WriteLine(iss);
//Console.WriteLine(icms);
//Console.ReadKey();
// ###### TIPOS DE INVESTIDORES
//Conta conta = new Conta(1000);
//RealizadorDeInvestimentos realizador = new RealizadorDeInvestimentos();
//double resultadoConservador = realizador.RealizaInvestimento(conta, new Conservador());
//conta.Deposita(resultadoConservador);
//Console.WriteLine($"conservador: {conta.Saldo}");
//conta = new Conta(1000);
//Conta conta1 = new Conta(1000);
//Moderado moderado = new Moderado();
//double resultadoModerado = realizador.RealizaInvestimento(conta, moderado);
//double resultadoModerado1 = realizador.RealizaInvestimento(conta1, moderado);
//conta.Deposita(resultadoModerado);
//conta1.Deposita(resultadoModerado1);
//Console.WriteLine($"conta: {conta.Saldo}");
//Console.WriteLine($"conta 1: {conta1.Saldo}");
//conta = new Conta(1000);
//double resultadoArojado = realizador.RealizaInvestimento(conta, new Arojado());
//conta.Deposita(resultadoArojado);
//Console.WriteLine($"arojado: {conta.Saldo}");
//Console.ReadKey();
#endregion
#region Chain of Responsibility
//CalculadorDeDescontos calculador = new CalculadorDeDescontos();
//Orcamento orcamento = new Orcamento(1000);
//orcamento.AdicionaItem(new Item("Caneta", 500));
//double desconto = calculador.Calcula(orcamento);
//Console.WriteLine(desconto);
//Console.ReadKey();
#endregion
#region Templete Method
//Orcamento orcamento = new Orcamento(501.0);
//orcamento.AdicionaItem(new Item("Caneta", 500));
//orcamento.AdicionaItem(new Item("Lapis", 500));
//CalculadorDeImposto calculadorDeImposto = new CalculadorDeImposto();
//double icpp = calculadorDeImposto.RealizaCalculo(orcamento, new ICPP());
//Console.WriteLine(icpp);
//double ikcv = calculadorDeImposto.RealizaCalculo(orcamento, new IKCV());
//Console.WriteLine(ikcv);
#endregion
#region Decorator
//Imposto iss = new ISS(new ICMS(new IKCV(new ICCC())));
//Imposto impostoMuitoAlto = new ImpostoMuitoAlto(new ICMS());
//Orcamento orcamento = new Orcamento(500);
//double valor = impostoMuitoAlto.Calcular(orcamento);
//Console.WriteLine(valor);
#endregion
#region State
//Orcamento reforma = new Orcamento(500);
//reforma.AplicaDescontoExtra();
//reforma.AplicaDescontoExtra();
//Console.WriteLine(reforma.Valor);
//reforma.Aprova();
//reforma.AplicaDescontoExtra();
//Console.WriteLine(reforma.Valor);
//reforma.Finaliza();
#endregion
#region State
//Conta conta = new Conta();
//conta.Saca(1000);
//Console.WriteLine(conta.Saldo);
#endregion
#region Criacao de objeto com Builder e Executandos varias ações com Observer - Builder e Observer
NotaFiscalBuilder nfBuilder = new NotaFiscalBuilder()
.ParaEmpresa("Caelum")
.ComCnpj("123.456.789/0001-10")
.ComItem(new ItemDaNotaBuilder()
.ComNome("Item 1")
.ComValor(100.0)
.Builder())
.ComItem(new ItemDaNota("item 2", 200.0))
.ComItem(new ItemDaNota("item 3", 300.0))
.ComObservacoes("entregar nf pessoalmente");
nfBuilder.AdicionaAcao(new EnviadorDeEmail());
nfBuilder.AdicionaAcao(new EnviadorDeSms());
nfBuilder.AdicionaAcao(new NotaFiscalDao());
NotaFiscal nf = nfBuilder.Builder();
#endregion
}
}
}