Understanding design patterns is a difficult task because the patterns are abstract and there can be so many incarnations. I have been careful about my purchases of reference books, and I consider all these here essential reading.