segunda-feira, 9 de maio de 2016

Clean Architecture

Ao separar o software em camadas, e em conformidade com a regra de dependência, você vai criar um sistema que é intrinsecamente testável, com todos os benefícios que isso implica.
Quando qualquer uma das partes externas do sistema tornam-se obsoletos, como o banco de dados, ou o framework web, você pode substituir os elementos obsoletos com um mínimo de trabalho. 
Círculos internos definem interfaces.
Círculos externos implementam as interfaces.
A arquitetura de software deve ser: 
  • Independente de Framework
  • Estável (business pode ser testado sem influência de UI ou outro agente externo)
  • Independente de Banco
  • Independente de agentes externos (regras de negocio puras) 

 

The Dependency Rule

Esta regra diz que as dependências de código fonte só pode apontar para dentro. Nada em um círculo interno pode saber alguma coisa sobre alguma coisa em um círculo externo. Isso inclui, funções, classes. variáveis, ou qualquer outra entidade.

Entities

Entidades encapsula regras de negócio da empresa. Uma entidade pode ser um objeto com métodos, ou pode ser um conjunto de estruturas de dados e funções. Não importa, desde que as entidades podem ser utilizados em muitas aplicações diferentes na empresa.

Use Cases


Os softwares dessa camada contém regras de negócio específicas de aplicação. Ele incorpora e implementa todos os casos de uso do sistema. Esses casos de uso orquestrar o fluxo de dados de e para as entidades, e direcionar essas entidades a utilizar as suas regras de negócio para empresas, para atingir os objetivos do caso de uso.

Interface Adapters

Os softwares nessa camada é um conjunto de adaptadores que convertem os dados do formato mais conveniente para os casos de uso e entidades, para o formato de um agente externo, como o banco de dados etc. Os apresentadores, views e controllers pertencem todos aqui. 

Nenhum código dentro deste círculo deve saber alguma coisa sobre o banco de dados.

Frameworks and Drivers.

A camada mais externa é geralmente composto de estruturas e ferramentas, tais como banco de dados, a Web Framework, etc Geralmente você não escrever muito código nesta camada diferente do código de cola que se comunica com o próximo círculo dentro. 

Boundaries. 

Podemos considerar tudo aquilo que define comunicação entre as fronteiras.

Por exemplo: Request Model, Response Model , fazem a comunicação entre os modelos da entidade com a View.
Referências:

Nenhum comentário:

Postar um comentário