Getting Acquainted with Value Objects
Course Content
0 / 95 completedWhat to Expect from This Course and This Module
Understanding the Value of Domain-Driven Design
Introduction and Overview
Exploring the Benefits and Potential Drawbacks of DDD
Gaining a High-Level Understanding of DDD
Introducing Our Sample Application
Exploring the Sample Apps High-level Structure
Review and Resources
Inspecting a Mind Map of Domain-Driven Design
Introducing Our Domain
Introduction and Overview
Planning Ahead to Learn About the Domain
Reviewing Key Takeaways from Meeting with Domain Experts
Conversation with a Domain Expert-Exploring the Domain and Its Subdomains
Taking a First Pass at Modeling our Subdomain
Conversation with a Domain Expert-Exploring the Scheduling Subdomain
Using Bounded Contexts to Untangle Concepts that Appear to Be Shared
Addressing the Question of Separate Databases per Bounded Context
Specifying Bounded Contexts in our Application
Understanding the Ubiquitous Language of a Bounded Context
Introducing Context Maps
Conversation with Eric Evans on Subdomains and Bounded Contexts
Conversation with a Domain Expert- Working on our Ubiquitous Language
Review and Resources
Reviewing Important Concepts from This Module
Course Overview
Introduction and Overview
The Importance of Understanding DDD Terms
Focusing on the Domain
Identifying Events Leads to Understanding Behaviors
Understanding Entities
Comparing Anemic and Rich Domain Models
Differentiating CRUD from Complex Problems that Benefit from DDD
Switching Between Contexts in a UI
Using GUIDs or Ints for Identity Values
Talking with Eric Evans About the Responsibility of Entities
Synchronizing Data Across Bounded Contexts
Review and Resources
Implementing Entities in Code
Introduction and Overview
Getting Acquainted with Value Objects
Recognizing Commonly Used Value Objects
Understanding Domain Services
Review and Resources
Implementing Value Objects in Code
Getting More Insight from Eric Evans and Vaughn Vernon
Introduction and Overview
Tackling Data Complexity
Handling Relationships that Span Aggregates
Introducing Aggregates and Aggregate Roots
Considering Associations in Aggregates
Using Invariants to Better Understand Our Aggregate
Evolving the Appointments Aggregate
Sharing Our Tips for Aggregate Design
Recognizing Signs of a Misidentified Aggregate
Review and Resources
Modeling Breakthroughs and Refactoring
Considering Schedule as Our New Aggregate
Exploring the Schedule Aggregate in Our Application
Introduction and Overview
Repository Benefits
Introducing Repositories
Repository Tips
Avoiding Repository Blunders
Addressing the Debates Around Using Repositories
Returning IQueryables-Pros and Cons
Considering Generic Repositories and Interfaces
Exploring Repositories in our Application
Introducing the Specification Pattern
Using Specifications with Repositories in Our App
Review and Resources
Introduction and Overview
Introducing Domain Events
Identifying Domain Events in Our System
Designing Domain Events
Exploring Domain Events in Our Application
Applying Domain Events to a Simple App
Introducing Anti-Corruption Layers
Review and Resources
Introduction and Overview
Addressing a New Feature with the Domain Expert
Planning Our Implementation Steps
Reviewing Our Current System Design
Introducing Message Queues
Sending a Message to the Queue
Reading From the Message Queue and Acting on the Message
Using Multiple Queues to Handle Various Communications
Debugging to See the Detailed Implementation in Code
Sharing Some Tips for Extending and Running the Sample Application
Considering Microservices
Considering the UI in the Domain Design
Modeling with Event Storming and Other Techniques
Lessons Learned Since Our 2014 Course
Eric Evans on the Fallacy of Perfectionism
Review and Resources