principles:encapsulate_the_concept_that_varies
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| principles:encapsulate_the_concept_that_varies [2021-09-02 12:25] – old revision restored (2021-05-19 11:22) 65.21.179.175 | principles:encapsulate_the_concept_that_varies [2021-10-18 21:31] (current) – +++ restored +++ christian | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| ===== Context ===== | ===== Context ===== | ||
| /* fill in contexts here: */ | /* fill in contexts here: */ | ||
| - | * [[contexts: | + | * [[contexts: |
| + | * [[contexts: | ||
| + | * [[contexts: | ||
| ===== Principle Statement ===== | ===== Principle Statement ===== | ||
| Line 47: | Line 48: | ||
| * Visitor: New operations have to be added to a given more or less static inheritance structure of classes. | * Visitor: New operations have to be added to a given more or less static inheritance structure of classes. | ||
| * ... | * ... | ||
| + | |||
| + | ===== Caveats ===== | ||
| + | |||
| + | See section [[#contrary principles]]. | ||
| + | |||
| ===== Origin ===== | ===== Origin ===== | ||
| + | |||
| + | The principle is stated, explained and used in the GoF book: | ||
| Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: // | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: // | ||
| + | |||
| + | But the idea if ECV is actually much older. It was first presented in | ||
| + | |||
| + | David Parnas: // | ||
| + | |||
| ===== Evidence ===== | ===== Evidence ===== | ||
| Line 73: | Line 86: | ||
| * **[[More Is More Complex]] (MIMC)**: ECV demands adding a new class for a new varying concept. | * **[[More Is More Complex]] (MIMC)**: ECV demands adding a new class for a new varying concept. | ||
| - | * [[Model Principle]] (MP): ECV sometimes results in classes which do not correspond | + | * [[Model Principle]] (MP): ECV sometimes results in classes which do not correspond |
| ==== Complementary Principles ==== | ==== Complementary Principles ==== | ||
| Line 87: | Line 100: | ||
| - | ===== Example | + | ===== Examples |
| Line 102: | Line 115: | ||
| * [[Single Responsibility Principle]] | * [[Single Responsibility Principle]] | ||
| * [[Open-Closed Principle]] | * [[Open-Closed Principle]] | ||
| + | |||
| + | ===== Discussion ===== | ||
| + | |||
| + | Discuss this wiki article and the principle on the corresponding [[talk: | ||
| + | |||
principles/encapsulate_the_concept_that_varies.1630578349.txt.gz · Last modified: by 65.21.179.175
