This post will be an introduction to Software Design Patterns wherein we will cover the design patterns history, types of design patterns & resources to learn design patterns.
Topics Covered
Software Design Patterns
Software Design Patterns are reusable solutions to common problems in software development. They’re blueprints (templates) designed to help solve problems and write reusable code.
Design Patterns are pre-made solutions to the common problems in software development.
Wikipedia Says:
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.
History
Patterns originated as an architectural concept by Christoper Alexander in early 1977.
In 1987, Kent Beck and Ward Cunningham began experimenting with the idea of applying patterns to programming.
Design Patterns gained popularity after the book “Design Patterns: Elements of Reusable Object-Oriented Software” was published in the year 1994 by the so-called “Gang-of-Four” (GoF).
Gang-of-Four
- Erich Gamma
- Richard Helm
- Ralph Johnson
- John Vlissides
Types of Design Patterns
Design Patterns are broadly classified into three categories.
- Creational
- Structural
- Behavioral
Creational
Creational patterns are ones that create objects, rather than having to instantiate objects directly. This gives the program more flexibility in deciding which objects need to be created for a given case.
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
Structural
Structural patterns are concerned with organizing classes and objects into large structures, keeping the structure flexible and efficient.
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
Behavioral
Behavioral patterns deal with communication and responsibility between objects.
- Chain of Responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
Here is the diagrammatic representation of all the 3 types of design patterns.
Resources to learn
In this section, we have listed two resources that are best for learning design patterns at this point in time.
Books
These are a few top books to refer to for Software Design Patterns.
Websites
These two websites are the best available resources for Design Patterns.
Courses
These are a few of the courses to check out for learning design patterns.
1. The Ultimate Design Patterns
2. Design Patterns Certification Training
Hope you like this post on Introduction to Software Design Patterns. Please share it with your friends and you may read our posts on C# Programing Language.
Happy Learning!