Design Patterns in C# With Real-time Examples
In this article series, I discussed all the Design Patterns in C# with real-time examples using different types of dot net applications which include ASP.NET MVC, Web API, and Console Applications. It is very easy to understand and implement design patterns with real-time applications. Writing the code with design patterns will make your applications more Reliable, Scalable, and Maintainable.
These tutorials are design for beginners as well as professionals developers who want to learn Dot Net Design Patterns with Real-time Examples step by step from the very basics to the advanced concepts of many different types of Design Patterns in C# with real-time examples. This C# Design Patternstutorial series provides a hands-on approach to the subject with step-by-step programming examples that will assist you to learn and put the acquired knowledge into practice.
History and Evolution of Design Patterns
The four authors of the book famously know as the Gang of four is the ones who brought the concepts of design patterns in their book “Elements of Reusable Object-Oriented Software”.
Gang of Four has divided the book into two parts with the first part explaining the pros and cons of object-oriented programming and the second part describes the evolution of 23 classic software design patterns.
What are Design Patterns?
Design Patterns are nothing but documented and tested solutions for recurring problems in a given context. So, in simple words, we can say that the Design Patterns are reusable solutions to the problems that as a developer we encounter in our day to day programming. Design Patterns are basically used to solve the problems of object generation and integration.
The Design Pattern is not a silver bullet. Let us understand what it means. While developing your project you know your project requirement better. We have many design patterns. Take the design pattern as a reference and see does the design pattern does really solves your project problem. If yes, then only use the design pattern.
Do not overdo design patterns. One thing you need to remember is that the design patterns are for projects and projects are not for patterns. I saw many developers are enforcing the design pattern into their project which makes the project messy. So, use only when required.
Types of Design Patterns
Gang of Four categorized the Design Pattern into three main categories based on the three problem areas (object creation and initialization, Structural Changes of class and interfaces, and the relationship between classes, Communication between objects) of software architecture. They are as follows.
- Creational Design Pattern (object creation and initialization)
- Structural Design Pattern (Structural Changes of class and interfaces, and the relationship between classes)
- Behavioral Design Pattern (Communication Between Objects)
Creational Design Patterns:
The Creational Design Pattern deals with Object Creation and Initialization. The Creational Design Pattern gives the programmer more flexibility in deciding which objects need to be created for a given case. For example, if we have a huge project, a huge project means we have a lot of classes, a lot of classes mean we are dealing with a lot of objects. So we need to create different objects (like new Customer(), new product(), new invoice(), etc.) based on some conditions. If the object creations logic based on some condition is implemented in the client code, then it leads to lots of complicated logic in the client code. That means if the object creations and initialization logic are not centralized then it leads to a very complicated code. The Creational Design Pattern helps us to centralized the object creation logic and depending upon the condition, it will create and initialize the appropriate object and returns that object.
Structural Design Patterns:
The Structural Design Pattern is basically used to manage the structure of classes and interface as well as manage the relationship between the classes. For example, if we have a Customer and Product class and the Product class is used inside the Customer class making one to many relationships. Tomorrow, as the project proceeds, now we want to keep away the product class from the Customer class as we want to use the Product and Customer class independently. This is a structural change and we don’t want this structural change to affect our project. This is where the Structural Design Pattern helps us.
Behavioral Design Patterns:
The Behavioral Design Patterns deal with the communication between Classes and objects. That means if you want to change the behavior of a class and again you want it to affect other classes of the project as well. For example, you have an Invoice class that currently applying taxes as 18%. Tomorrow if you have to add another extra tax. That means you are changing the behavior of a class. To solve such types of Behavioral issues Behavioral Design Pattern comes into the picture.
How easily you are going to understand the design patterns that basically depends on how strong you are in object-oriented programming concepts. So, to take full advantage of Design Patterns in C# tutorials, it is very important for you to have at least the basic knowledge of the following object-oriented programming concepts.