Why we use Design Patterns?
Amit Khanna
If any problem is coming again and again in some environment, then Design Pattern provides a pointer to resolve that problem
We have already solved solutions as "Ready Made" available for the repetitive problems, not only for software but also for all the problems in the world.
When you plug your TV set to a socket in the wall, instead of peeling off the cables and connecting them to two hot wires sticking out of the wall, you are using a pattern. Using patterns is easier than reinventing the wheel. It has always been easier to use an existing wheel than invent one from scratch.So we should use Design Patterns because of following benefits. Design patterns have two major benefits. First, they provide you with a way to solve issues related to software development using a proven solution. The solution facilitates the development of highly cohesive modules with minimal coupling. They isolate the variability that may exist in the system requirements, making the overall system easier to understand and maintain. Second, design patterns make communication between designers more efficient. Software professionals can immediately picture the high-level design in their heads when they refer the name of the pattern used to solve a particular issue when discussing system design.
Design patterns offer the best possible and time tested slution for a known problem which software programmers usually try to solve.Think of a common problem, only one instance must exist, and so Singleton pattern comes for best possible solution.
Provide a common behavior for all user requests. Pattern is modelling to your program.
Please have a look at below article. It may help in understanding the concept. http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/
Different pattern gives us a way of solution in different style with some different functionality including coding efficiency and time consuming matter.
WHEN WE HAVE A PROBLEMS IN CODINGS WE CAN USE THESE DESIGN PATTERNS JUST BY DIVIDING THE PROBLEMS INTO SMAILER PROBLEMS KNOWN AS DECOMPOSITION,INHERITENCE ETC
In some cases, for practicality. When you see a common recurring problem, you find a common, general solution to solve it. It happens in architecture, mechanics, usability, and human behavior, and programming makes no exception.In some other cases, the pattern is also a way to deal with "inefficiencies" of the language, where "inefficiency" is very broad in its meaning, and not always in a bad term. For example, some patterns typically used in java are less important in a language where functions are first class objects. Some design patterns are meaningful only in some languages, and impossible in others: Crockford describes Javascript patterns that are kind of unique to this language to deal with the potential minefield-like nature of the language (which, I must point out, is a really cool language, once you understand it).