Contain contents not parents

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m
Line 1: Line 1:
 
:''A class must know what it contains, but it should never know who contains it.'' --Riel's Heuristic 4.13, [[Arthur Riel 1996]]
 
:''A class must know what it contains, but it should never know who contains it.'' --Riel's Heuristic 4.13, [[Arthur Riel 1996]]
  
This heuristic refers to the idea that classes should not know what objects contain them as this makes them far less reusable. If a class is designed for a specific use and is dependent on a parent object, it can't then be used inside a different type of parent object. For example, Riel uses the example of a ''BedRoom'' containing an ''AlarmClock''. The ''BedRoom'' object must know about the ''AlarmClock'' object inside it, but if ''AlarmClock'' is dependent on ''BedRoom'' then it can't then be used inside a ''TimeLockSafe''.
+
This heuristic refers to the idea that classes should not know what objects contain them as this makes them far less reusable (). If a class is designed for a specific use and is dependent on a parent object, it can't then be used inside a different type of parent object. For example, Riel uses the example of a ''BedRoom'' containing a ''Clock''. The ''BedRoom'' object must know about the ''Clock'' object inside it. However if ''Clock'' knows about and depends on ''BedRoom'' then it can not then be reused inside another object for example a ''TimeLockSafe'' object.
  
 
The [[Chain of Responsibility]] design pattern violates this heuristic.
 
The [[Chain of Responsibility]] design pattern violates this heuristic.
  
 
[[Category:Riel's heuristics]]
 
[[Category:Riel's heuristics]]

Revision as of 02:49, 23 July 2009

A class must know what it contains, but it should never know who contains it. --Riel's Heuristic 4.13, Arthur Riel 1996

This heuristic refers to the idea that classes should not know what objects contain them as this makes them far less reusable (). If a class is designed for a specific use and is dependent on a parent object, it can't then be used inside a different type of parent object. For example, Riel uses the example of a BedRoom containing a Clock. The BedRoom object must know about the Clock object inside it. However if Clock knows about and depends on BedRoom then it can not then be reused inside another object for example a TimeLockSafe object.

The Chain of Responsibility design pattern violates this heuristic.

Personal tools