The best tip I can give you regarding the design patterns is to simply understand how to use them. If you have questions about what a specific pattern does or how to use it, post them. I would steer away from any type of "if you see this, then the pattern is that" strategy.
“Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.” - Rich Cook
Yatesh, I think, though it is not bad idea for the exam to remember the phrases and get some good score on design patterns, I personally prefer to learn details on desing patterns like what scenarios we use, how to use, what are the consequences, etc.. Any way, here are some key words from me.. "reducing network traffic" : value objects "caching remote objects" : service locator "multiple clients" : mvs "separation of client from business logic": business delegate anything db related: dao
In the exam I had approximately 5 questions about patterns. Some of them presented a scenario or a problem and asked about one or two patterns we could use to help solve the problem or improve the situation.
I remember one question where they asked about benefits of one specific pattern.
I believe most of the questions are based in these main ideas:
1) Transfer object: used to reduce network traffic and to reduce coupling. But its use demands more complex software to handle synchronization and concurrency. 2) Intercepting filter: used to do modify requests before they arrive at a servlet or to modify responses before they go to the client. And filters can be added or put out of the application without changing the code, only accessing the DD. 3) Service locator: used to centralize the responsibility of finding objects over the net. Mainly if you have many different clients, each one of them with different locator systems. 4) MVC: it decreases coupling and separates business and view duties. 5) Front controller: it reduces redundant code. 6) Business delegate: used to reduce coupling and to reduce complexity (while accessing objects in different machines).