As a newcomer diving into the field of software development, I had the core programming skills to get a job. However, because of my different field of study, there was also a lot of different topics, which I had to teach myself. Among those topics were design patterns.
After learning about the various common design patterns through books
and blog post, I thought to myself:
I did not believe that it was necessary to read an entire book to understand these topics. Especially if you already had a fundamental understanding of object-oriented programing language.
I attempt to cover the necessary content in all conceivable ways: video, blog, UML, code snippets, theoretical, and practical.
Although I have not yet covered all the relevant design patterns, I have started on the journey.
I took the time to investigate which design patterns were the most popular based on search traffic. I believed that this would be the most relevant way of covering the design patterns one by one. Starting with the most popular.
The result of my research surprised me in terms of ranking and the “close to zero” search traffic, which some of the patterns received.
In the image above, I only included the eleven most popular design patterns. Any other design pattern besides these, receive less attention. This includes Composite, Abstract Factory, Proxy, State, Flyweight, Template Method, Iteratoretc.
Arguably some of these design patterns are practical to use in different scenarios, but I didn’t expect several well-established patterns to be totally neglected. Based on my own opinion, I see that many of the neglected patterns are more complex than the ones with higher popularity.
Take the example of the factory pattern and the proxy pattern. The factory pattern is rather easy to comprehend, does not require extensive knowledge of object-oriented languages. Whereas the proxy pattern requires more knowledge of client-server-communication and a fundamental understanding of the proxy’s purpose as a placeholder.
On the other hand, I also see less complex patterns, such as the template method pattern, being neglected. However, in this specific case I believe that it might be because the template method is more acknowledged as an object-oriented principle than a design pattern.
This sets the questions: Is there a relationship between complexity and
popularity? How come so many of them do not receive any search traffic?
Although I have my theory, I still believe that there might be more to it.
I hope that you found the blog post relevant and that you will support me in the journey through all design patterns. Who knows you might even learn something.
My name is Daniel H. Jacobsen and I’m a dedicated and highly motivated software developer with a masters engineering degree within the field of ICT.
I have through many years of constantly learning and adapting to new challenges, gained a well-rounded understanding of what it takes to stay up to date with new technologies, tools and utilities.
The purpose of this blog is to share both my learnings and knowledge with other likeminded developers as well as illustrating how these topics can be taught in a different and alternative manner.
If you like the idea of that, I would encourage you to sign up for the newsletter.