Skip to content

Instantly share code, notes, and snippets.

@zabaala
Last active September 9, 2020 12:27
Show Gist options
  • Save zabaala/9f14b218edc34e02f16b9e9ea39476c9 to your computer and use it in GitHub Desktop.
Save zabaala/9f14b218edc34e02f16b9e9ea39476c9 to your computer and use it in GitHub Desktop.
Referências dos materias que consumi nos últimos dias sobre DDD

Publicações

  1. Anemic Domain Model vs Rich Domain Model with Examples
    https://thevaluable.dev/anemic-domain-model/

  2. Symfony: services and Rich Domain Models
    https://stackoverflow.com/questions/58091042/symfony-services-and-rich-domain-models

  3. How to use Repository with Doctrine as Service in Symfony
    https://tomasvotruba.com/blog/2017/10/16/how-to-use-repository-with-doctrine-as-service-in-symfony/

  4. The Value Object and Doctrine
    https://www.thinktocode.com/2018/03/19/the-value-object-and-doctrine/

  5. Martin Fowler - Tudo sobre Domain Driven Design
    https://martinfowler.com/tags/domain%20driven%20design.html

  6. Domain-driven design
    https://en.wikipedia.org/wiki/Domain-driven_design

Vídeos

  1. Aprenda DDD (Domain Driven Design) do jeito certo
    https://www.youtube.com/watch?v=eUf5rhBGLAk

  2. [REPLAY] Desenvolvendo um Microserviço com PHP usando DDD e filas | Full Cycle | Aula ao Vivo
    https://www.youtube.com/watch?v=mujACF7kMvM

Anotações

São somente anotações, não afirmações. Só pra deixar registrado...

Dominios Anêmicos (Domínio Pobre)

  • Só possuem getter e setters
  • Simples armazenamento de estados
  • Náo possuem foco no comportamento
  • Não garante integridade dos dados
  • Tem características muito parecidas com o paradigma procedural
  • Normalmente possui sepração de uma camada de serviço que fica responsável por todo o resto
  • Normalmente, seta um estado e, em seguida, executa uma ação.

Dominios Ricos

  • As entidades possuem mais do que getters e setters
  • A logica esta na entidade
  • O dominio tem que proteger a aplicação
  • Garante a consistencia integral dos dados
  • Protege as regras de dominio (validações, comunicações / integrações com outros domínios)
  • Serviços externos não tem conhecimento das regras privadas do domínio
  • Só é público aquilo que representa algum tipo de serviço, não apenas getters e setters.
  • Cria uma camada externa, quando precisa acessar algo da infraestrutura (enviar email, sms, disparar eventos, etc)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment