Many times we have a functonality/behavior in our software applications which can be better achieved using a Design Pattern like you must have heard Singleton, Factoy, Facade etc.The benefit you get from design pattern is optimized code which is following the OOP principles and can take care of many issues like coupling, dependencies etc.
Describes how to separate the responsibilities of components in the presentation layers by using common design patterns.
Benefits of Using Design Patterns
Most computing problems you will encounter in business applications have already been confronted and solved by someone, somewhere. Design patterns and reusable frameworks based on these solutions help you to overcome the complexity that exists in large applications. The following is a brief summary of the benefits of design patterns and reusable components:
Design patterns?Design patterns provide access to proven methodologies for solving general problems and the ability to use the collective knowledge and experience of the IT community to improve the quality of your own applications. You can use patterns to help you organize code in proven ways to solve well-understood problems.
There are many proven design patterns that help you solve problems relevant to the presentation layers. Choosing the correct patterns leads to more maintainable code that separates unrelated tasks and functionality. Using these patterns leads to better modularity, higher cohesion, and lower coupling in your application; these are essential characteristics of well-designed systems. The design patterns described in this chapter apply to both Windows Forms-based user interfaces and ASP.NET Web pages.
Reusable components?Reusable components encapsulate functionality that is common across many applications and increase productivity when building your own components following a certain set of design patterns.
The Microsoft User Interface Process Application Block is a reusable component that helps you build user interfaces based on the Model-View-Controller (MVC) and Application Controller patterns. This block simplifies navigation between related pages or forms in the user interface, and it also lets you take a snapshot of the current state in the application so the user can resume the application at the same stage later. Additionally, the block enables you to get a clean separation between the code that handles user interactions and renders the user interface and the code that performs ancillary tasks; this approach allows you to use the same programming model for Windows Forms applications, Web Forms applications, and mobile applications.
Creating and using patterns promotes software reuse. a pattern is designed once and is used many times. Reuse of patterns potentially lowers production costs and saves time by eliminating redesign. Reuse affords higher software reliability and continuity to code design.
Give a permanent solution to routine errors. Flow of control for Application Extension.
Common benefits of design patterns are
A. Improves code maintainability
B. Introduces re-usability of code base.
C. Reduces chances of modifications in the base core functionality code.
D. Adheres to TDD (Test Driven Development).
E. Simultaneous code development and reduced dependency.
F. Loosely coupled development.
G.Dynamic code extensible.
H. Accommodating dynamic business requirements to a certain level.
Design Patterns are standard proved solutions by the Industry that those code will definitely work.
It is also easy to explain the concept to other user when you want to describe what you have done inside the application because from the name of Design pattern other developer can get some idea how the application has been coded.
Testing is easy on Design patterns.
You can use the classes which are due to some other reasons can not be directly used in the applications (adapter pattern) etc....
And above mentioned as well there are many, but one thing i would like to add It can make your application complex as well if not applied wisely. So a plan must be in the mind how application is going to work and how you are going to apply the design pattern.