Domain-Driven Design helps us write complex software.
At the heart of it lies the domain model, which is a conceptual model that incorporates both behavior and data.
Sounds complicated?
Let's explain with an example. 馃У
Suppose we want to build an eCommerce app.
To better understand this domain, we need to figure out:
- the entities we care about and their relationships
- the behaviour (or business logic) for manipulating them
The end result may look like this:
In Dart, we can represent each entity as a simple model class.
As we define this, it helps to think about all the properties that we need to show in the UI:
In some cases we need both a model class and the logic for manipulating it.
For example, here's how we may define a shopping cart class along with some methods for mutating its items:
Note how the Cart
class and MutableCart
extension don't have dependencies to any objects that live outside the domain layer.
This makes them very easy to test:
Eric Evans has written an ENTIRE book about Domain-Driven Design, and it's well worth a read if you want to expand your skills as an application developer.
But here's a short summary that may help you take the first steps in this complex field:
Found this useful? Show some love and share the original tweet 馃檹
Previous | Next |
---|---|
Better Comments Extension for VSCode | Domain-Driven Exception Handling |