Application Domain Layer
The objects used by your application represent its domain. Unlike other database platforms where the record data is, by default, hidden from end users, the Salesforce Platform displays your record data through the standard Salesforce UI, reports, dashboards, and Salesforce Mobile application. Field and relationship labels that you give your objects and fields are also used by these UI experiences. From the moment you create your first object, you start to define your application’s domain, just as Salesforce Standard Objects represent the CRM application domain.
Martin Fowler’s Patterns of Enterprise Application Architecture also recognizes this concept as a means of code encapsulation to combine the data expressed by each object with behaviors written in code that affect or interact with that data. This could be done with Apex – either from trigger logic, providing default and validation, or logic that awards championship points to...