Software Architecture in Practice

Read this section to learn about the main elements, patterns, quality attributes, and principles of software architecture, including encapsulation, polymorphism, and dependencies. Pay attention to design patterns and their importance in software design.

7. Mental Model for Applications

Domain Driven Design 
  • Helps classify components into logical categories to orchestrate certain behaviors 
  • Works well with modeling business applications


Domain Driven Design Objects 
  • Entity - objects with distinct identities and has a lifecycle 
  • Value Objects - immutable objects that has value but has no unique identity 
  • Domain Event - a record of something that happened in the software, can be used to publish to components that are interested 
  • Aggregate - cluster of objects that can be related and treated as a single unit 
  • Service - business logic operations that are stateless 
  • Repositories - deals with the entities and value objects lifecycle 
  • Factories - encapsulates creation of complex entities, aggregates and value objects