patterns:parameter_object
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
patterns:parameter_object [2016-07-20 13:15] – spelling error 149.126.110.238 | patterns:parameter_object [2020-10-12 16:50] – old revision restored (2013-07-06 22:13) 159.69.186.191 | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Alternative Names ===== | ===== Alternative Names ===== | ||
- | * Arguments | + | * Argument |
===== Context ===== | ===== Context ===== | ||
Line 11: | Line 11: | ||
===== Intent ===== | ===== Intent ===== | ||
- | |||
- | Group several method parameters in order to keep the number of parameters small and the interface stable. | ||
===== Problem ===== | ===== Problem ===== | ||
- | * Often there are methods which take a large number of input parameters. This makes using them cumbersome and the code less readable. See [[anti-patterns: | + | ===== Structure ===== |
- | * A second problem is the evolution of method signatures. There are circumstances where there is the chance that in the future further parameters will be added without all the users of the method needing the new parameter. [[glossary: | + | |
- | + | ||
- | ===== Solution ===== | + | |
- | + | ||
- | + | ||
- | ==== Structure ==== | + | |
- | + | ||
- | ==== Dynamics ==== | + | |
- | + | ||
- | ==== Implementation Hints ==== | + | |
- | + | ||
- | ==== Variations | + | |
+ | ===== Variations ===== | ||
===== Origin ===== | ===== Origin ===== | ||
- | {{page> | + | James Noble: //Arguments and Results// |
===== Advantages ===== | ===== Advantages ===== | ||
- | |||
- | * [[principles: | ||
- | * [[principles: | ||
===== Disadvantages ===== | ===== Disadvantages ===== | ||
- | |||
- | * [[principles: | ||
- | * [[principles: | ||
- | |||
===== Relations to Other Patterns ===== | ===== Relations to Other Patterns ===== | ||
- | ==== Generalizations ==== | + | ===== Pattern Collections ===== |
- | + | ||
- | ==== Specializations ==== | + | |
- | + | ||
- | * [[Selector Object]] | + | |
- | * [[Curried Object]] | + | |
- | + | ||
- | ==== Alternative Patterns ==== | + | |
- | + | ||
- | ==== Complementary Patterns ==== | + | |
- | + | ||
- | ==== Pattern Collections ==== | + | |
- | {{page> | + | |
===== Examples ===== | ===== Examples ===== | ||
Line 68: | Line 34: | ||
==== Example 1: Event Args ==== | ==== Example 1: Event Args ==== | ||
- | A typical usage of this pattern is the grouping | + | A typical usage of this pattern is the groping |
* In .NET there is the class [[http:// | * In .NET there is the class [[http:// | ||
* In Java there is [[http:// | * In Java there is [[http:// | ||
- | |||
- | ==== Example 2: CreateProcess==== | ||
- | |||
- | The Windows API function [[http:// | ||
- | |||
- | On the other hand the parameter object pattern is already applied here. The parameters lpProcessAttributes, | ||
- | |||
===== Description Status ===== | ===== Description Status ===== | ||
/* Choose one of the following and comment out the rest: */ | /* Choose one of the following and comment out the rest: */ | ||
- | [[wiki: | + | /*[[wiki: |
/ | / | ||
/ | / | ||
- | |||
===== Further Reading ===== | ===== Further Reading ===== | ||
Line 91: | Line 49: | ||
* [[wiki> | * [[wiki> | ||
* [[wiki> | * [[wiki> | ||
- | |||
===== Discussion ===== | ===== Discussion ===== | ||
Discuss this wiki article and the pattern on the corresponding [[talk: | Discuss this wiki article and the pattern on the corresponding [[talk: |
patterns/parameter_object.txt · Last modified: 2021-10-18 22:24 by christian