Depende do tipo de arquitetura que você deseja.
- No Design Orientado a Domínio, você criaria um Modelo de Domínio que teria dados e funcionalidade.
Isso significaria que um Order
possui uma propriedade (ou método) que retornaria o preço total do pedido com base no OrderLines
. Eles Order
também teriam um método AddOrderItem(Product product, int amount)
e Order
verificariam se já existe um OrderLine
para esse produto específico.
Nesse modelo, você também teria objetos que não são entidades reais, como um Repository
para acessar dados ou um Factory
para criar entidades. Estes são chamados de Serviços de Domínio. Uma camada de aplicativo é responsável por chamar os Serviços de Domínio (por exemplo, para recuperar uma entidade do banco de dados) e, em seguida, executará a funcionalidade na entidade. O Application Layer
deve ser o mais fino possível.
Este é um bom artigo sobre DDD, que explica esses conceitos em mais detalhes.
- Você também pode usar um modelo de domínio anêmico . Isso significa que suas entidades consistem em propriedades get / set e não contêm comportamento. Nesse design, sua Camada de Negócios conterá o comportamento, como calcular o
Order
preço e verificar se há duplicatas OrderLines
.
Existem opiniões diferentes sobre se um Modelo de Domínio Anêmico é uma coisa ruim. Pessoalmente , prefiro um modelo de domínio real.
Este artigo descreve as diferenças entre um modelo de domínio anêmico e não anêmico.