An example of a real-world project
To help ground the ideas of design patterns and DDD, we will discuss the implementation of an Amazon clone in C++.
Using DDD, the first step is to understand the domain. In this scenario, the domain is e-commerce. The idea, then, is to create a piece of software that models electronic commerce and supports users buying products online.
As previously mentioned, using bounded context is an essential component of DDD. In this case, we can identify the following ones – product management, order processing, and payment processing. Each has its own set of rules and constraints and can be considered a separate part of the system.
To begin with, let’s focus on the product management domain. This area includes product listings, inventory tracking, and customer feedback processing. Those concepts can be modeled using product, inventory, and review.
Let’s start with the product. Since product addition and removal happens frequently...