Send messages to components instead of to self
From CSSEMediaWiki
For an inheritance-based framework, behaviors achieved by overridden method is better to be replaced by encapsulate these methods into components, hence a component-based framework will be the result. Johnson and Foote suggest this kind of refactoring is always needed, and such changes should be applied whenever it is possible. It can help the framework to be able to work with pluggable objects, and it helps to increase the cohesion and generality of such a framework.