Design Pattern is a general reusable solution to a common problem in software design.
Blue print that you can follow to solve a particular design issue in the code.
It is not specific to any programming language and can be applied in various contexts.
The pattern is not a specific piece of code, but a general concept for solving a particular problem. You can follow the pattern details and implement a solution that suits the realities of your own program.
In 1994, four authors published Design Patterns: Elements of Reusable Object-Oriented Software. It introduced design patterns for solving programming problems and became very popular. People often call it “the GoF book” (short for “Gang of Four”).
Patterns are often confused with algorithms.
Algorithm: A step-by-step procedure to solve a specific problem. It’s like a recipe with exact steps.
Design Pattern: A general solution to a common problem in software design. It’s more like a blueprint that can be adapted to different situations.
Why?
- Reusability: Design patterns provide solutions that can be reused in different parts of your application or in different projects.
- Efficiency: They help you solve problems more quickly by providing a tried-and-tested approach.
- Maintainability: Code that follows design patterns is often easier to understand, maintain, and extend.
- Communication: They provide a common vocabulary for developers, making it easier to discuss and share design ideas.
How?
- Identify the problem
- Choose the right pattern
- Implement the pattern
Types
1. Creational Design Patterns -> Focus on the process of object creation or problems related to object creation. It help in creating objects in a flexible and efficient way. They control how objects are created to reduce complexity and increase flexibility.
2. Structural Design Pattern -> Focus on how classes and objects are composed to form larger structures. They help ensure that when changes are made in one part of a system, other parts remain unaffected, making the system more flexible and easier to maintain.
3. Behavioral design patterns -> Focus on how objects interact and communicate with each other. They help manage complex control flows and ensure that objects work together efficiently. It concerned with algorithms and the assignment of responsibilities between objects.
Drawbacks
1. Complexity: Implementing design patterns can sometimes add unnecessary complexity to the code.
2. Learning Curve: They can be difficult for beginners to understand and apply correctly.
3. Overhead: Some patterns may introduce performance overhead.
4. Rigidity: Overuse of patterns can make the code rigid and harder to modify.
5. Inappropriate Use: Using the wrong pattern for a problem can lead to inefficient solutions.
Top comments (0)