Entrei em contato com o professor do curso "Design Patterns para bons programadores em C#", o Maurício Aniche, perguntando sobre a seguinte situação:
Vejo que nos exemplos das aulas há, em todas as classes, métodos simulando regras de negócio. O que você me diz, tendo em mente as boas práticas de programação, das classes de negócio, contidas na camada de negócio?
Podemos criar classes somente com seus atributos e colocar tais métodos com regras de negócio nas classes de negócio ou não? Deveríamos ter métodos, mesmo contendo regras de negócio, na própria classe?
E obtive a seguinte a resposta do professor:
Não entendi sua dúvida. Todas as classes que mostrei no curso são classes de domínio e contém regras de negócio. A ideia é sempre você deixar atributos e comportamentos perto, sem dúvida. Separamos isso só quando realmente precisamos de flexibilidade (veja o Strategy, por exemplo, onde temos uma classe só com regra de negócio).
É isso?
Continuando a dúvida e, com uma explicação melhor:
A dúvida é se crio nas classes de domínio atributos e métodos contendo regras de negócio ou se crio apenas os atributos e separo os métodos que contém regras de negócio nas classes de negócio, contidas na camada de negócio (BLL)?
Exemplos (Duas situações. Qual é a certa?):
Camada de Entidades > Classes de domínio somente com atributos e Camada de Negócio (BLL) > Classes de negócio com métodos que contém regras de negócio
ou
Camada de Entidades > Classes de domínio com atributos e métodos que contém regras de negócio e Camada de negócio (BLL) > Classes de negócio com métodos que contém outras regras de negócio.
Considerando que um projeto ASP.NET WebForms contenha 4 camadas (DAL, BLL, PL e Entidades):
- DAL > Acesso a dados
- BLL > Regras de negócio
- PL > Views ou Interfaces de usuário
- Entidades > Classes de domínio
Espero que tenha explicado melhor...
Desde já, grato;
Diogo Marins