You know the basics of refactoring: you rename variables for maximum clarity, extract methods to make them nice and compact, and sometimes even extract shared code into a superclass. But how do you go beyond the basics, to get simpler classes and more modular code? In this hands-on training session, we’ll demonstrate techniques for dividing large, complex classes into small, cohesive units. You’ll learn several key class-level refactorings, when to apply them, and how to find a class for every responsibility. This is a hands-on tutorial, so bring your laptop and be prepared to write some code!
http://submit2012.agilealliance.org/files/session_pdfs/Better Code, Littler Classes.pdf