How guilhermebarbarino/pattern-strategy-calculo-frete works
Aplicação de console para cotação de frete: o usuário informa CEPs, peso, distância e modalidade; o sistema valida os CEPs, consulta os endereços e calcula a cotação usando uma estratégia adequada. O README documenta as três modalidades e o padrão Strategy; o código amostrado confirma a orquestração, consulta ViaCEP com cache e estratégias registradas por DI. A implementação de algumas estratégias e do formatador não foi amostrada; seus caminhos vêm da árvore, então suas ligações detalhadas foram omitidas.
Main entry points: Program.cs Inicialização DI · ServicoCalculoFreteComEndereco.cs Cálculo com endereço · ServicoCalculoFrete.cs Seleção de estratégia · MenuConsole.cs Menu console
Components 22
Interface console
- Inicialização DI
CalculoFrete.ConsoleApp/Program.cs - Menu console
CalculoFrete.ConsoleApp/IU/MenuConsole.cs - Leitor console
CalculoFrete.ConsoleApp/IU/LeitorConsole.cs - Formatador console
CalculoFrete.ConsoleApp/IU/FormatadorConsole.cs
Aplicação
- Cálculo com endereço
CalculoFrete.Aplicacao/Services/ServicoCalculoFreteComEndereco.cs - Seleção de estratégia
CalculoFrete.Aplicacao/Services/ServicoCalculoFrete.cs - Contrato de leitura
CalculoFrete.Aplicacao/Interfaces/ILeitorConsole.cs - Contrato de formatação
CalculoFrete.Aplicacao/Interfaces/IFormatadorConsole.cs
Domínio
- Solicitação de frete
CalculoFrete.Dominio/Models/SolicitacaoFrete.cs - Resultado da cotação
CalculoFrete.Dominio/Models/ResultadoCalculoFrete.cs - Cotação de frete
CalculoFrete.Dominio/Models/CotacaoFrete.cs - Endereço CEP
CalculoFrete.Dominio/Models/EnderecoCep.cs - Contrato de estratégia
CalculoFrete.Dominio/Interfaces/IEstrategiaCalculoFrete.cs - Contrato de consulta CEP
CalculoFrete.Dominio/Interfaces/IConsultaCep.cs - Erro de validação
CalculoFrete.Dominio/Erros/ErroValidacaoFrete.cs
Infraestrutura
- Retirada na loja
CalculoFrete.Infra/Strategy/EstrategiaRetiradaNaLoja.cs - Frete expresso
CalculoFrete.Infra/Strategy/EstrategiaFreteExpresso.cs - Frete econômico
CalculoFrete.Infra/Strategy/EstrategiaFreteEconomico.cs - Cliente ViaCEP
CalculoFrete.Infra/Client/APi/ClienteViaCep.cs - Cache CEP memória
CalculoFrete.Infra/Cache/CacheCepInMemory.cs
Other components
- Usuário
- Serviço ViaCEP
Connections 29
- Inicialização DI → Menu console: inicia
- Inicialização DI → Seleção de estratégia: registra
- Inicialização DI → Cálculo com endereço: registra
- Inicialização DI → Retirada na loja: registra
- Inicialização DI → Frete expresso: registra
- Inicialização DI → Frete econômico: registra
- Inicialização DI → Cliente ViaCEP: registra cliente
- Inicialização DI → Cache CEP memória: registra cache
- Inicialização DI → Leitor console: registra
- Inicialização DI → Formatador console: registra
- Menu console → Leitor console: solicita entrada
- Usuário → Leitor console: informa dados
- Leitor console → Solicitação de frete: cria solicitação
- Menu console → Cálculo com endereço: envia solicitação
- Cálculo com endereço → Contrato de consulta CEP: consulta CEP
- Cálculo com endereço → Seleção de estratégia: solicita cálculo
- Cálculo com endereço → Resultado da cotação: monta resultado
- Cálculo com endereço → Erro de validação: lança validação
- Seleção de estratégia → Contrato de estratégia: avalia estratégias
- Seleção de estratégia → Retirada na loja: invoca estratégia
- Seleção de estratégia → Frete expresso: invoca estratégia
- Seleção de estratégia → Frete econômico: invoca estratégia
- Seleção de estratégia → Cotação de frete: retorna cotação
- Cliente ViaCEP → Cache CEP memória: lê e grava
- Cliente ViaCEP → Serviço ViaCEP: consulta endereço
- Cliente ViaCEP → Endereço CEP: cria endereço
- Cálculo com endereço → Menu console: retorna resultado
- Menu console → Formatador console: formata resultado
- Menu console → Usuário: exibe cotação