From: Peter Hickman Date: 2012-05-01T17:51:41+09:00 Subject: Re: I need some advice for a project I am working on Patterns come with experience. It's one of those things that some academic noticed that developers were doing and related it to Christopher Alexanders work in architecture. As you become experienced you will naturally use and be able to identity those patterns, there also exist 'anti-patterns' - patterns created by persistent bad habit and uncritical use of "industry standards" which are arguably more important to identify. But whatever. However an important point is that the original gang of four patterns do not apply to all languages (they were identified in the C/C++/Java style of languages and are partially a consequence of the language design) because some languages implement the patterns at a language level. Some patterns are easier in one language than another or at least may be more efficiently in one than another. For example not all languages are OO. Heresy I know :) Back to your project. Build up the use cases for your application. Then see what concrete classes are needed and then see what you can abstract (don't force yourself, there may be little abstraction to be had) then model how they interact. Write code and then identify the patterns that you have used.