I've always recognized the importance of utilizing design patterns. I'm curious as to how other developers go about choosing the most appropriate one. Do you use a series of characteristics (like a flowchart) to help you decide?
If objects are related, but we do not want to specify concrete class, consider Abstract
When instantiation is left to derived classes, consider Factory
Need to access elements of an aggregate object sequentially, try Iterator
or something similar?