Introduction to Design Patterns

Since I am currently doing a lot of research and work on project architectures during my "Mobicule Technologies" IT Industry training period, I am sharing my knowledge with you. So let's have a look at the very basics of designing a good architecture. To begin, we must start with Design Patterns, since it's the most important thing to remember when working in the industry or any big project.

What Design Patterns are

Design Patterns provide a set of probable solutions for the most common problems encountered in Software Design by every developer while developing any business level application/software, that is tested to work best in specified situations.

In simple words, Design Patterns, suppose you have a problem developing a project. Certainly, with the evolution of the software industry, many other developers might have encountered the same problem in their life at least once while working on a project. Design patterns shows the best possible of various ways to solve the recurring problems.

Uses of Design Patterns

When developing any application, we developers think a lot about how the software application will behave in the flow of the run. And of course, It is too difficult for every developer to predict how the architecture will work for the software application when the actual software application built is completed. You might find many problems/bugs that even you cannot predict and nearly all of them occur when implementing the software application itself. So these Design Patterns help you to find a possible tested and proven design paradigm for your problem that you have encountered.

History of Design Patterns

When the term Design Pattern comes to mind, the first thing one may think of is the classic book, namely "Design Patterns: Elements of Reusable Object-Oriented Software" that was published by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides published in 1994, for explaining the concept of Design Pattern in Software Development. These four authors are collectively known as the Gang of Four (GOF). In this book, the capabilities and pitfalls of Object Oriented Programming is first discussed and later it discusses the classic Design Patterns on OOP.

Advantages of Design Patterns

The following are the advantages of Design Patterns:

  1. Reusable designs and interactions of objects.
  2. Solution for common problems occur in software design
  3. Developer can implement these design patterns in all programming languages as it provide common platform.
  4. Provide the standard terminology for specific scenario.

Types of Design Patterns

The types of Design Patterns can be organized into 4 separate pattern groups depending on the nature of the design problem they intend to solve. The following Design Patterns will prevent major problems that will exist in the future while building any software application and also helps the other architects/developers to easily understand your code.

  1. Gang of Four Patterns
  2. Enterprise Patterns
  3. SOA and Messaging Patterns
  4. Model-View Patterns

If anyone has worked in Object Oriented Programming concepts you have probably used nearly all the patterns, because they are just small solutions that constantly reoccur while working on any projects. (Hence they are called "Patterns".)