The drawing above shows an example of the division of a system into multiple domain modules. In this division, each module has its own domain model. Let’s discuss each.
To search successfully, data, such as descriptions, images or prices, must be stored for the products. Important customer data can include, for example, the recommendations that can be determined based on past orders.
To process orders in the order process module, the contents of the shopping cart have to be tracked. For products, only basic information is required such as name and price. Similarly, not too much data concerning the customer is necessary. The most important component of the domain model of this module is the shopping cart. It is then turned into an order that has to be handed over and processed by the other bounded contexts.
For payment, the payment-associated information like credit card numbers has to be kept for each customer.
For shipping, the delivery address is required information about the customer while the size and the weight are necessary information about the product.
This list reflects that the modules require different domain models. Not only does the data concerning customer and product differ but so does the entire model and the logic.