Out of interest: In ASP.net MVC you can roll your own ControllerFactory. I just wonder why you would want to do that? I see dependency injection mentioned which makes sense to roll your own ControllerFactory, but then again I am not sure why I would want to use DI on the Controllers.
Swapping out the Model makes perfect sense, swapping out the Views also has some obvious uses, but I'm not sure if I could think of any use-case for swapping out Controllers that does not result in an architecture nightmare.
Any examples?