SE450: Choosing Delegation [34/35] Previous pageContentsNext page

GoF: prefer delegation. Subclassing is too static -- forces awkward class hierachies -- inflexible.

         /------------\
         | Deal       |
         \------------/
           /_\    /_\  
            |      |   
                       
            |      |   
 +------------+  +-------------+
 | ActiveDeal |  | PassiveDeal |
 +------------+  +-------------+
     /_\              /_\
      |                |
      |                |
 +------------+  +-------------+
 | Tabular    |  | Tabular     |
 | ActiveDeal |  | PassiveDeal |
 +------------+  +-------------+

versus

         /------------\                  1 /-------------------\
         | Deal       |<>----------------> | PresentationStyle |
         \------------/                    \-------------------/
           /_\    /_\                          /_\    /_\           
            |      |                            |      |            
                                                                    
            |      |                            |      |            
 +------------+  +-------------+     +------------+  +-------------+
 | ActiveDeal |  | PassiveDeal |     | TabularPS  |  | SinglePS    |
 +------------+  +-------------+     +------------+  +-------------+

In english, we often say "is" when we mean "has the attribute of".

"The shirt is purple" versus "The shirt has a color attribute, which is purple".

"The room is a cuboid" versus "The room has a shape attribute, which is cuboid".

Previous pageContentsNext page