Design Patterns - actionanand/coffeescript-practice GitHub Wiki

Introduction

Generally speaking, a design pattern represents a formal way of documenting a solution to a design problem. Design, in the wider sense of the word can refer to various fields of study, software development included. As wikipedia puts it, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design.

We can see design patterns as an abstract way of describing common pieces of code, inheritance, architecture etc. Often, these can't be translated to code directly and need certain adaptation to a project or a certain way of thinking. Additionally, no design pattern is a universal solution or a "silver bullet" - they can and should be adapted to the problem at hand.

Having said that, let's take a closer look at some commonly used design patterns in modern software development.

Commonly used design patterns

Let's start with something commonly mentioned in the course - MVC (Mode-View-Controller). Love it or hate it, it is in fact one of the most used design patterns in the wild. Historically, it is tied to the development of the Graphical User Interface itself, as early as the 70s.