Andrea Bizzotto 💙 Profile picture
Flutter GDE ❖ I share tips about Dart & Flutter app development ❖ YouTube: https://t.co/w60pn75qOK ❖ Complete Flutter Course Bundle: https://t.co/AmkCKg7YkV

Feb 9, 2022, 7 tweets

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:

Did you find this useful or have feedback to share? Let me know in the comments. 👇

And for more Flutter (and app development) tips, just follow me: @biz84

Happy coding!

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling