Contain contents not parents

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m (Reverted after discussion with Alex)
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 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.
+
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''.
  
 
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 03:12, 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 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.

The Chain of Responsibility design pattern violates this heuristic.

Personal tools