Table of Contents

Parameter Object

Alternative Names

Context

Intent

Group several method parameters in order to keep the number of parameters small and the interface stable.

Problem

Solution

Structure

Dynamics

Implementation Hints

Variations

Origin

James Noble: Arguments And Results

Advantages

Disadvantages

Relations to Other Patterns

Generalizations

Specializations

Alternative Patterns

Complementary Patterns

Pattern Collections

Examples

Example 1: Event Args

A typical usage of this pattern is the grouping of parameter in events. Some events carry large amounts of context data. Furthermore modifying the signature of an event causes large ripple effects as they are typically used on the interface to other subsystems, layers, etc. and there is an unknown and probably large amount of users of the event.

Example 2: CreateProcess

The Windows API function CreateProcess is both an example for the problem and (partly) an example for the pattern. Firstly CreateProcess takes ten arguments most of which are even optional. The function is cumbersome to use and hard to read because of the large number of parameters. This is precisely the problem described above.

On the other hand the parameter object pattern is already applied here. The parameters lpProcessAttributes, lpThreadAttributes, and lpStartupInfo are pointers to structures which hold further arguments. This is the procedural equivalent of a parameter object.

Description Status

Stub

Further Reading

Discussion

Discuss this wiki article and the pattern on the corresponding talk page.