Okay so I am officially going to start working through each and every design pattern in the “Sun Certified Enterprise Architect for J2EE Technology” study guide. I keep going through the book from time to time and while it is fun reading UML, there is absolutely no replacement for code and your own experience.
I started with a top level “design.patterns” package which will have Creational, Structural and Behavioral patterns as a sub-package. I thought about then writing the examples all under the pattern-type package (design.pattern.Creational) but realized that we may soon have a lot of files from different patterns and not know at-a-glance how many classes we may need per pattern, for example. So I decided to create another level which the Pattern Name so that we can build the Tester and pattern implementation classes under a proper subtree, “design.pattern.Creational.AbstractFactory” for example.
I also hope to explore some of the anti-pattern implementations we have made and try to reason if that was a good choice then or good choice in hindsight : )
So until then … lets brush up our types (look at the image above – “Creational”, “Structural” and “Behavioral”) and understand what they mean – i.e. ask your self what is the difference between Creational pattern and Structural pattern and when you would think-about one vs the other. Good luck!