A design pattern for transferring data between software subsystems
A reusable solution to a recurring programming problem