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 revisionNext revisionBoth sides next revision | ||
principles:encapsulate_the_concept_that_varies [2013-01-30 10:44] – OCP, SRP christian | principles:encapsulate_the_concept_that_varies [2021-09-02 12:26] – old revision restored (2021-05-11 21:52) 65.21.179.175 | ||
---|---|---|---|
Line 2: | Line 2: | ||
===== Variants and Alternative Names ===== | ===== Variants and Alternative Names ===== | ||
+ | |||
+ | * Open-Closed Principle | ||
===== Context ===== | ===== Context ===== | ||
Line 9: | Line 11: | ||
===== Principle Statement ===== | ===== Principle Statement ===== | ||
- | |||
- | Encapsulate the Concept that Varies, i.e. a design is better when those parts that vary are encapsulated in a separate module. | ||
Line 38: | Line 38: | ||
==== Generalizations ==== | ==== Generalizations ==== | ||
- | * [[Generalization Principle]] | + | * [[principles:Generalization Principle]] |
==== Specializations ==== | ==== Specializations ==== | ||
- | |||
- | * [[Single Responsibility Principle]] (SRP): A responsibility in the sense of SRP is defined as "a reason for change" | ||
- | * [[Open-Closed Principle]] (OCP): The OCP demands encapsulating abstract concepts in base classes (or interfaces) in order to be able to enhance the module by subclassing which is possible without changing the previously written code. In this case several variations of a concept may exist in the code at the same time. There is always the abstract base class plus one or usually more concrete subclasses. So the OCP is about encapsulating abstract concepts that vary "in space" | ||
==== Contrary Principles ==== | ==== Contrary Principles ==== | ||
- | * [[More Is More Complex]] | + | * [[principles:More Is More Complex]] |
- | * [[Keep It Simple Stupid]] (KISS): ECV demands adding a new class for a new varying concept. This adds complexity. | + | * [[principles:Model Principle]] |
- | * [[Model Principle]] | + | |
==== Complementary Principles ==== | ==== Complementary Principles ==== | ||
- | * [[Dependency Inversion Principle]] | + | * [[principles:Dependency Inversion Principle]] |
==== Principle Collections ==== | ==== Principle Collections ==== |
principles/encapsulate_the_concept_that_varies.txt · Last modified: 2021-10-18 21:31 by christian