title: In the strategy pattern, what's the best way to deal with shared behaviour?
body: <p>I have implemented the strategy pattern - is there a smart way to deal with the duplication of function2() and function1() below?<br>
  The IBehaviour interface has other members that don't share functionality.</p>
  
  <pre><code>class Behaviour1: IBehaviour
  {
      public void DoSomething()
      {
          Function1();
      }
      //other functions of IBehaviour
  }
  
  class Behaviour2 : IBehaviour
  {
  
     public void DoSomething()
     { 
         Function2();
         Function1();
     }
     //other functions of IBehaviour
  }
  
  class Behaviour3 : IBehaviour
  {
      public void DoSomething()
      {
          Function2();
      }
      //other functions of IBehaviour
  }
  </code></pre>
  
  <p>I already have one class to deal with this behaviour.  Then I realised that different situations require different behaviours, so in this main class, I create a Behaviour object at run-time.  I am reluctant to create yet another class for Function1 and Function2, so I wondered if there is something that I am missing.</p>