Dependency Inversion for Entities - software architecture
Problem to solve: We create a core software entity, for example a Product - this will become root or parent entity Then we create multiple "child" entities that depend on Product . For example Order and Warranty . We have business rules for the "parent" entity that depend on "child" entities. For example you cannot remove a Product if there are in-flight Orders; or if the Warranty period is not over for all the instances of that Product We want to avoid putting all those business rules in Product , because such "tight coupling" would make the software harder to maintain as the system grows. Solution: TLDR: It helps to imagine the entities Product , Order and Warranty as defined in separate software modules, either in a modular monolith or in a microservice architecture. This will highlight the loose coupling we want to achieve. Howeve...