title: Java Abstract Class or Static Utility Class Design Choice
body: <p>I am implementing a few strategies <a href="http://en.wikipedia.org/wiki/Strategy_pattern#Java" rel="noreferrer">(Strategy Pattern)</a> which have some common behavior and am undecided where the common operations should live.</p>
  
  <ul>
  <li>Assuming I 1 context and 3 strategies, some of the operations used in the strategies are shared, some are needed only by 2 others just be 1 of the strategies.  </li>
  <li>There is no member level state shared, therefore the only operations are effectively stateless.  </li>
  <li>The intention of the operations are to support the formatting of state to a file, like a view helper.</li>
  </ul>
  
  <p><strong>Option 1: Make an AbstractStrategy class</strong></p>
  
  <ul>
  <li>I'm using Java so this immediately
  takes away using this feature in the
  future. </li>
  <li>Inheritance tends to result.
  in a ridge structure.</li>
  <li>Operations would be final.</li>
  </ul>
  
  <p><strong>Option 2: Create a Util class of static helpers</strong></p>
  
  <ul>
  <li>Flexible, but feels like a code smell for some reason.</li>
  <li>Not ridged.</li>
  </ul>
  
  <p>Any recommendations or preferences?</p>
  
  <p>Note the level I am working at is the Strategy level, not the Context level (see wikipedia link).</p>