I host a design pattern study group called the Wing Ding. 16 people attended. Almost all of my beer is gone.
We split into 2 circles for Factory Method. Then we played musical chairs, sat back down and discussed Strategy. Two hours was plenty to cover 2 patterns. Thanks to Steven Lewis for facilitating the second circle.
The Factory Method is pretty straightforward. Though we did spend some time covering the differences between Factory Method, Abstract Factory and to a lesser degree Builder. Lance Young brought printouts of sample uses of Factory Method in the JDK. Bravo Lance! We also discussed the nature of design patterns, which perhaps should be called meta patterns. For instance, two common characteristics of design patterns are the addition of a level of indirection and the deferral of decisions to runtime (versus compile time). Both characteristics promote the creation of loosely coupled code and promote reuse. Of course, my suggestion that Object.clone() is a Factory Method was shot down.
Strategy is a bit more intriquing, but oddly, we had less to talk about. I think this reflects the relative frequency of Factory Method (a lot) and Strategy (not so much) in typical code. Paul Schwartz prompted a comparison between Strategy and State, which was very informative. The concensus was that Strategy's behavior is set by the client and State is responsible for managing its own behavior. Everyone agreed that AWT's layout manager is an example of Strategy. People were less convinced that AWT 1.1's event model, registering anonymous inner classes as listeners, is also an example of Strategy.
All in all, this Wing Ding, the first to use the Industrial Logic study guide, was very successful. I was pleasantly surprised to learn new insights and details about patterns which I thought I knew cold.