User Tools

Site Tools


principles:encapsulate_the_concept_that_varies

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
principles:encapsulate_the_concept_that_varies [2021-09-02 12:25]
65.21.179.175 old revision restored (2021-05-19 11:22)
principles:encapsulate_the_concept_that_varies [2021-10-18 21:31] (current)
christian +++ restored +++
Line 5: Line 5:
 ===== Context ===== ===== Context =====
 /* fill in contexts here: */ /* fill in contexts here: */
-  * [[contexts:Object-Oriented Design]]  +  * [[contexts:Object-Oriented Design]] 
 +  * [[contexts:API Design]] 
 +  * [[contexts:Architecture]]
  
 ===== 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: //[[wp>Design Patterns|Design Patterns: Elements of Reusable Object-Oriented Software]]// ("GoF book"), p. 29 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: //[[wp>Design Patterns|Design Patterns: Elements of Reusable Object-Oriented Software]]// ("GoF book"), p. 29
 +
 +But the idea if ECV is actually much older. It was first presented in
 +
 +David Parnas: //[[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232|On the Criteria To Be Used in Decomposing Systems into Modules]]//
 +
  
 ===== 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 top a real-world concept in the sense of MP. A "concept that varies" can also be a technical concept.+  * [[Model Principle]] (MP): ECV sometimes results in classes which do not correspond to a real-world concept in the sense of MP. A "concept that varies" can also be a technical concept.
  
 ==== 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|talk page]].
 +
principles/encapsulate_the_concept_that_varies.1630578349.txt.gz · Last modified: 2021-09-02 12:25 by 65.21.179.175