Domain Model Martin Fowler
For a full description see p of eaa page 116.
Domain model martin fowler. Capturing system stimuli through domain event is a significant decision. The name comes from a 2003 book by eric evans that describes the approach. In his post anemicdomainmodel martin fowler describes an anemic domain model this way. At its worst business logic can be very complex.
Domain driven design is an approach to software development that centers the development on programming a domain model that has a rich understanding of the processes and rules of a domain. If there s a theme that runs through my work and writing on this site it s the interplay between the shift towards agile thinking and the technical patterns and practices that make agile software development practical. The domain model is a representation of meaningful real world concepts pertinent to the domain that need to be modeled in software. Presentation ui domain logic aka business logic and data access.
The anemic domain model is really just a procedural style design exactly the kind of thing that object bigots like me and eric have been fighting since our early days in smalltalk. There are objects many named after the nouns in the domain space and these objects are connected with the rich relationships and structure that true domain. A domain model is a system of abstractions that describes selected aspects of a sphere of knowledge influence or activity a domain. Common ways to modularize an information rich program is to separate it into three broad layers.
The model can then be used to solve problems related to that domain. An object model of the domain that incorporates both behavior and data. It imposes a distinct architectural style on an application and a programming model that will often seem awkward at least initially. Rules and logic describe many different cases and slants of behavior and it s this complexity that objects were designed to work with.
Domain driven design is an approach to software development that centers the development on programming a domain model that has a rich understanding of the processes and rules of a domain. So you often see web applications divided into a web layer that knows about handling http requests and rendering html a business. A website on building software effectively. At this point it s not clear whether this approach actually is any more effort once you ve got used to it.