How do you decide on which design pattern to choose for?
My approach to development projects has always been.
- Take down business requirement.
- Design the database.
- Decide on technology (This decision is almost always driven by the client.)
- Start developing a prototype.
- Get prototype approved. (iterative)
- Build the application.
- Release for testing. (iterative)
- Hand over for maintenance.
I am not sure where a design pattern would be useful.
Usually before you build the prototype and always before you build the application you have to design it. Here is where a knowledge of design patterns come very handy since not only helps you with the design but also when communicating your ideas with other developers. For example when you tell another developer that a particular class is a Factory or another is implemented as a Singelton they immediately have a better grasp of what and/or how they do what they do and how they fit with the rest of the application.
I very much would recommend “Head First Design Patterns” from O’Reilly to get you started.