title: How to refactor tightly coupled classes?
body: <p>I'm trying to refactor a big tightly coupled application and trying to make it more maintainable and flexible.</p>
  
  <p>I've got many unit tests, so I'm hoping to refactor step by step.</p>
  
  <p>Which Design &amp; Refactoring Patterns should I consider implementing / applying to accomplish this task ?</p>
  
  <p>I can think of some :</p>
  
  <ul>
  <li><a href="http://sourcemaking.com/refactoring/extract-interface" rel="nofollow noreferrer">Extract Interface</a> </li>
  <li><a href="http://sourcemaking.com/refactoring/extract-method" rel="nofollow noreferrer">Extract Method</a></li>
  <li><a href="http://en.wikipedia.org/wiki/Dependency_injection" rel="nofollow noreferrer">Dependency Injection</a></li>
  </ul>
  
  <p>Also feel free to share your own experience and best practices for this kind of refactoring job.</p>
  
  <p><strong>UPDATE</strong> </p>
  
  <p>I'm carrying out this refactoring <a href="https://stackoverflow.com/questions/794038">because of the reasons explained in this question</a>. Basically I can't implement a plugin system without extracting an couple of interfaces and those interfaces are highly coupled which requires separated the application in 40+ DLLs to just compile without circular referencing problem. </p>