First off, let me say that refactoring is really nothing more than rewriting code to improve the logic. My personal recommendation is to write it correctly in the first place. That said, I have worked on many projects when I didn't write the code in the first place, but it needs help. Since management tends to frown on rewriting code, instead we refactor it, because that is clearly a better alternative.
OK, so we are going to structure some code into some meaningful arrangement that allows the code to be understood and maintained. Where do we start? What's the best organization? Should we use design patterns?
How would you go about writing a recipe? First, you need an idea of what you want to make. Then you need a list of things that will be used to make it. This can include additional tools necessary in the production. Generally you would then break the process up into meaningful steps or stages. Say, for example, we are making a pumpkin pie.
We have our idea: Pumpkin Pie.
That's a good start.
To simplify this, we'll just buy the parts we can, such as a pie crust and filling.
We need to prepare the crust.
We need to prepare the filling.
We need to combine them.
We need to bake it.
We need to eat it. (OK, this isn't really a step, I just want some pie.)
We are talking about programming so let's convert this pseudo-recipe into a psuedo-program.