Why Use Patterns?
· They have been proven. Patterns reflect the experience, knowledge and engineering insights of developers who have successfully used these patterns in their own work.
· They are reusable. Patterns provide a ready-made solution that can be adapted to different problems without the need to reinvent the wheel on a project-by-project basis.
· They are expressive. Patterns provide a common vocabulary of solutions that can express large solutions succinctly. They provide a design vocabulary and reusable artifacts. Once described, any level engineer can use the pattern.
Many programmers don't know design patterns even with many years of
experience. However as an Object-Oriented programmer, they have to know them
well, especially for a new Java programmer. Actually, when you solve a coding
problem, you use a design pattern rather you may not know a popular name to
describe it. It is always beneficial to learn from the experiences of the past
to solve the coding problems and use them in your projects are a best way.
To keep pace with the new developments, it is imperative that you are not wasting time in maintaining designs that have poor architecture or code that was poorly written. Just use the Design Patterns as they involved a highly experienced engineering in recognizing, collaborating and refining a design pattern. Design pattern is just a recommendation and it is up to the engineer or architect, to apply a pattern appropriately to his scenario.
A design pattern does not apply that only one solution exists for a problem neither it necessarily imposes as the best solution in all cases. Patterns merely provide a best-practice approach to a particular problem, learned through the countless experiences of the programming community. A pattern often has several variations. Each programmer must determine if and when to apply a particular pattern. Often, the programming environment in use influences the pattern choice. Not all programming environments and languages support all design patterns. What may be easy to create in one environment or language may be extremely difficult in another.
Recommend the tutorial