Domain Service (Kotlin)
Overview
Aplicar o padrão de serviço de domínio em Kotlin para encapsular regras que não pertencem naturalmente a uma única entidade/VO, mantendo lógica pura e independente de infraestrutura.
Guidelines
- Considerar domínio apenas dentro de pacotes
domainoucore. - Manter o serviço sem dependência de framework, HTTP, banco, Spring ou estado global.
- Preferir funções puras e determinísticas.
- Receber dados de domínio (entities, VOs) e retornar tipos simples ou valores de domínio.
- Nomear por intenção de regra (
*Policy,*Calculator,*Resolver,*Specification). - Implementar como
object(singleton stateless) ou classe simples.
Workflow
- Confirmar que a classe alvo está em pacote de domínio.
- Identificar a regra transversal que não cabe em uma única entidade.
- Definir API mínima (object com função ou classe com método).
- Implementar regra sem side effects e sem I/O.
- Garantir consumo simples por use cases.
- Criar testes unitários cobrindo cenários principais e bordas.
References
Consultar references/domain-service-pattern-kt.md para critérios, exemplos e checklist.
Consultar ../skills-standards.md para convenção global de nomenclatura (seção Kotlin).
Global Standards
- Consultar
../skills-standards.mdpara padrões globais de nomenclatura e convenções gerais entre skills.