Design Patterns — From a Software Architect’s Perspective
Few days ago, while answering a question from, one of my young colleague, during a training session, I just tried to explain architecture of a mobile application from a right angle.
“What are data structures — Just a design pattern of memory. By arranging memory in different ways, we’ve discovered what are the pros and cons of organizing memory in a particular way-like Linked List, Tree or stack etc. and have found which arrangement is optimal to use in which use case.” I found myself saying.
Suddenly, an idea bell, rang in my head. Oh! I never thought, like that, before. I was caught by the idea and next morning came up with this.
In next few days, the idea crystallized in my mind as a concept.
If design is an ‘arrangement of elements’ & ‘repetition of design’ is a pattern, just imagine with me:
Elementary particles arrange in a certain way to form atoms, which repeat themself to form an element.
Elements arrange in a design to form compounds or alloys, which in turn form soil, sand, rocks and water reservoirs.
The whole landscape of our or any other planet is an arrangement of these building blocks i.e. soil, sand, water, rocks/mountains etc. Even if some other planet has frozen Carbon Dioxide or some other element, its just an arrangement of compounds.
Now, let’s zoom out a bit — -
Solar system of our Sun or any other star, is an arrangement of planets, with each planet having a design consisting of its moons.
A galaxy is a repetition of stars and
Our universe is a design, composed by different galaxies arranged in certain way.
The term design patterns was first used by civil architects to recommend certain arrangements of building blocks as a time tested solution of a particular requirement. It was later adopted by software engineering. Almost every software engineering student is aware of 3 types of software design patterns i.e. creational, structural & behavioral.
What if you try to apply the idea of Design Patterns, on some other component or vertical of your observation, like forests, sea, living organisms etc. etc.
For example don’t you think different phyla represent a particular design pattern in living beings?
Don’t you think, God has designed this universe in the form of repeating building blocks, including me and you?
Don’t you think, God was thinking in terms of Design Patterns, when he created this Universe?