Thanks to visit codestin.com
Credit goes to github.com

Skip to content

abhishelligikar/Design-Patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

Design-Patterns

Design patterns are a way to solve commonly occurring problems in software engineering. They are reusable, tested solutions to certain software design problems. They are not cookie-cutter solutions, and developers using them can tailor them to address the specific problem at hand.

Let's start with a brief overview of the four pillars of object-oriented programming - abstraction, polymorphism, inheritance, and encapsulation (a.k.a. A-P-I-E).

The case for design patterns A-P-I-E is foundational, but the software engineering realm often requires more nuanced solutions. This is where design patterns come into play. They complement A-P-I-E, bridging the gap between basic OOP concepts and complex challenges. Built upon the SOLID design principles, design patterns are like evolved strategies that are tried, tested, and shared by the developer community. Instead of a lengthy walkthrough, just naming a known design pattern can bring everyone on the same page. It streamlines collaboration and boosts efficiency.

Think of it this way: while constructing a building, understanding the basics like bricks, cement, and steel (A-P-I-E in our context) is crucial. But, it's the architectural blueprints and patterns that ensure the building stands tall, is functional, aesthetic, and safe. Similarly, while A-P-I-E sets the groundwork, design patterns are those architectural blueprints for software, ensuring it’s resilient, scalable, and maintainable.

One might wonder, why not just reinvent solutions when faced with new challenges? Well, consistently trying to reinvent the wheel for recurrent software challenges can be a resource drain. Instead of investing time in crafting a new solution from scratch, leveraging a design pattern that's already been through the rigors of multiple real-world tests can save both time and effort. Plus, it brings with it the wisdom of countless developers who have refined and endorsed it.

The key takeaway? It's not about picking between A-P-I-E, design principles, or design patterns; it’s about understanding their synergy.

Behavioral Patterns:

Strategy Observer Creational Patterns:

Factory Builder Singleton Structural Patterns:

Facade Adapter Decorator

References : https://neetcode.io/courses/design-patterns https://refactoring.guru/design-patterns/csharp

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages