Domain Logic Patterns
Organizes business logic by procedures where each procedure handles a single request from the
An object model of the domain that incorporates both behavior and data
A single instance that handles the business logic for all rows in a database table or view.
Defines an application's boundary with a layer of services that establishes a set of available
operations and coordinates the applications response in each operation.
Data Source Architectural Patterns
Table Data Gateway
An object that acts as a gateway to a database table. One instance handles all the rows in the
Row Data Gateway
An object that acts as a gateway to a single record in a data source. There is one instance per row.
An object that wraps a row in a database table or view, encapsulates the database access, and adds
domain logic on that data.
A layer of mappers that moves data between objects and a database while keeping them independent of
each other and the mapper itself.
Object-Relational Behavioral Patterns
Unit of Work
Maintains a list of objects affected by a business transaction and coordinates the writing out of
changes and the resolution of concurrency problems.
Ensures that each object gets loaded only once by keeping every loaded object in a map. Looks up
objects using the map when referring to them.
An object that doesn't contain all of the data you need but knows how to get it.
Object-Relational Structural Patterns
Saves a database id field in an object to maintain identity between an in-memory object and a
Foreign Key Mapping
Maps an association between objects to a foreign key reference between tables.
Association Table Mapping
Saves an association as a table with foreign keys to the tables that are linked by the association.
Has one class perform the database mapping for a child class.
Maps an object into several fields of another objects table.
Saves a graph of objects by serializing them into a single large object (LOB), which it stores in a
Single Table Inheritance
Represents an inheritance hierarchy of classes as a single table that has columns for all the fields
of the various classes.
Class Table Inheritance
Represents an inheritance hierarchy of classes with one table for each class.
Concrete Table Inheritance
Represents an inheritance hierarchy of classes with one table per concrete class in the hierarchy.
A structure to organize database mappers that handle inheritance hierarchies.
Object-Relational Metadata Mapping Patterns
Holds details of object-relational mapping in metadata.
An object that represents a database query.
Mediates between the domain and data mapping layers using a collection like interface for accessing
Web Presentation Patterns
Model View Controller
Splits user interface interaction into three distinct roles.
An object that handles a request for a specific page or action on a website.
A controller that handles all requests for a website.
Renders information into HTML by embedding markers in an html page.
A view that processes domain data element by element and transforms it into html.
Two Step View
Turns domain data into html in two steps. First by formatting some kind of logical page, then
rendering the logical page into html.
A centralized point for handling screen navigation and the flow of an application.
Provides a coarse-grained facade on fine-grained objects to improve efficiency over a network.
Data Transfer Object
An object that carries data between processes in order to reduce the number of method calls.
Offline Concurrency Patterns
Optimistic Offline Lock
Prevents conflicts between concurrent business transactions by detecting a conflict and rolling back
Pessimistic Offline Lock
Prevents conflicts between concurrent business transactions by allowing only one business
transaction at a time to access data.
Locks a set of related objects with a single lock.
Allows framework or layer supertype code to acquire offline locks.
Session State Patterns
Client Session State
Stores session state on the client.
Server Session State
Keeps the session state on a server system in a serialized form.
Database Session State
Stores session data as committed data in the database.
An object that encapsulates access to an external system or resource.
An object that sets up a communication between two independent objects.
A type that acts as the supertype for all types in its layer.
Defines an interface in a separate package from its implementation.
A well known object that other objects can use to find common objects and services.
A small simple object, like Money or a Date Range, whose equality isn't based on identity.
Represents a monetary value.
A subclass that provides special behavior for particular cases.
Links classes during configuration rather than compilation.
Removes dependencies upon problematic services during testing.
An in-memory representation of tabular data.