Domain-Driven Design: The Last Explanation You'll Ever Need

Поділитися
Вставка
  • Опубліковано 19 січ 2025

КОМЕНТАРІ • 30

  • @erickgeneric
    @erickgeneric 2 дні тому

    You are a great teacher. Excellent stuff ❤

  • @mofekayode8944
    @mofekayode8944 3 місяці тому +16

    Please start a playlist/ course where you build a mock application using Domain-Driven Design

  • @AbiyGirma-k7e
    @AbiyGirma-k7e 2 місяці тому +4

    Arguably one of the most straightforward and effective explanations for DDD. I appreciate the excellent content.

  • @sinaahmadpour3180
    @sinaahmadpour3180 3 місяці тому +2

    Probably one the best and simplest explanations for DDD. Thanks for the great content.

  • @casiezeq
    @casiezeq Місяць тому +1

    I love free education, thank you so much!

  • @patrickonielbernardo8786
    @patrickonielbernardo8786 Місяць тому +1

    excellent explanation for DDD. thank you for sharing this.

  • @user-bm5hl7gk2l
    @user-bm5hl7gk2l 2 місяці тому

    Thanks for your video! Interesting to see that you place controllers inside of the application layer. From my experience controllers are often placed inside of the presentation layer. Controllers are responsible for handling incoming requests, orchestrating responses, and interacting with use cases or application services. These responsibilities are specific to how the application interacts with the outside world (e.g., HTTP, WebSocket, or any other interface). The application layer, on the other hand, focuses on the core business logic and rules, independent of delivery mechanisms like HTTP or UI.
    By placing controllers in the presentation layer:
    - You isolate delivery-specific concerns (e.g., web or API handling) from the core application logic.
    - Changes to the delivery mechanism (e.g., migrating from REST to GraphQL) don’t impact the application layer.
    The application layer should define use cases or services that can be reused across multiple interfaces (e.g., CLI, API, scheduled jobs).
    What's your opinion about this? Thanks

    • @mlohr1
      @mlohr1 Місяць тому +1

      Look into hexogonal architecture, controllers are part of the MVC pattern for frontend which sits outside of domain model (incl. app services)

  • @yakoublarbi599
    @yakoublarbi599 2 місяці тому

    Thank you so much for this video, one of the best

  • @Shuyinz
    @Shuyinz 4 місяці тому

    This is gold! Thank you for sharing this video!

  • @leomysky
    @leomysky Місяць тому

    Thank you for the video

  • @lubarino.matheus
    @lubarino.matheus 3 місяці тому

    Amazing explanation

  • @shazaalyyy
    @shazaalyyy 3 місяці тому

    Best explanation

  • @syedmuhammadakbar7032
    @syedmuhammadakbar7032 4 місяці тому

    Thank you so much for your work...

  • @mohit84604
    @mohit84604 4 місяці тому

    thanks yarr that's what i needed.

  • @syed7996
    @syed7996 2 місяці тому

    Top Class👏👏

  • @mrlectus
    @mrlectus 2 місяці тому

    So who uses aggregates? I went through the code and none of the repository, services, events or value-object uses it.

  • @macieyo2963
    @macieyo2963 3 місяці тому

    HI. great video. What tool do you use for presentation?

  • @Manolete919
    @Manolete919 Місяць тому

    Excellent! Where is part 2?

  • @cristhiancantillo4922
    @cristhiancantillo4922 3 місяці тому

    underrated video!

  • @boscodomingo
    @boscodomingo 2 місяці тому

    Controllers are 100% infrastructure. Your application core should never care whether inputs come from an HTTP request or via CLI arguments

    • @mlohr1
      @mlohr1 Місяць тому

      Yes, see hexagonal architecture

  • @JamesOfKS
    @JamesOfKS 13 годин тому

    you don't explain value objects and domains services properly.
    a value object is a set of fields that have common parenting WITHIN an entity. for example in a "Person Entity", which very well would be an aggregate root entity, First Name, Middle Name, and Last name. are a "Name value type"
    a domain service is ONLY needed if you have a particular Business Transaction that spans Aggregate roots and should be considered carefully for implications. creating transaction across the aggregate root boundary means either distributed transaction or something like saga pattern. sometimes a lot of domain services is a smell that you don't really have your aggregate roots accurate.