In DDD, there are artifacts to express, create, and retrieve domain models: Example: Most airlines distinguish each seat uniquely on every flight. However, Southwest Airlines, Easy Jet and Ryanair do not distinguish between every seat; all seats are the same.In this context, a seat is actually a value object.POJOs and POCOs are technical implementation concepts, specific to Java and the . However, the emergence of the terms POJO and POCO reflect a growing view that, within the context of either of those technical platforms, domain objects should be defined purely to implement the business behaviour of the corresponding domain concept, rather than be defined by the requirements of a more specific technology framework.Based on the premise that if you have a good enough domain model, the user interface can simply be a reflection of this domain model; and that if you require the user interface to be a direct reflection of the domain model then this will force the design of a better domain model.The context of other models may still be vague and in flux.People on other teams won’t be very aware of the context bounds and will unknowingly make changes that blur the edges or complicate the interconnections.Describe the points of contact between the models, outlining explicit translation for any communication and highlighting any sharing. In the book Domain-Driven Design, a number of high-level concepts and practices are articulated, such as ubiquitous language meaning that the domain model should form a common language given by domain experts for describing system requirements, that works equally well for the business users or sponsors and for the software developers.
MDA is concerned more with the means of translating a model into code for different technology platforms than with the practice of defining better domain models.
It is useful to recognize this fact of life and work with it.
Strategic Design is a set of principles for maintaining model integrity, distillation of the Domain Model and working with multiple models. Yet when code based on distinct models is combined, software becomes buggy, unreliable, and difficult to understand.
Example: When people exchange business cards, they generally do not distinguish between each unique card; they only are concerned about the information printed on the card. Example: When you drive a car, you do not have to worry about moving the wheels forward, making the engine combust with spark and fuel, etc.; you are simply driving the car.
In this context, the car is an aggregate of several other objects and serves as the aggregate root to all of the other systems.
While domain-driven design provides many technical benefits, such as maintainability, Microsoft recommends that it be applied only to complex domains where the model and the linguistic processes provide clear benefits in the communication of complex information, and in the formulation of a common understanding of the domain.