See DesignPatternsConsideredHarmful.