Design patterns for modern softwares - Virtual Developers Conference 2020
Channel: Mauritius Software Craftsmanship Community
Date: 07/02/2021

Abstract
The intent of this topic is to show how software patterns helps in the world of software engineering and how it is a good practice.  The main purpose of this presentation is to show how design patterns comes in handy in the software engineering.  Important and most used design patterns like singleton, factory, builder, adapter, template and state will be discussed in details enabling the attendee to have a deep understanding of design patterns and where these patterns should be used. Examples will be used to support each patterns in different programming language: Go language, PHP and JavaScript.

Discussion
As a developer, you are constantly resolving problems. Many of these problems probably were already solved by other developers, so, why do we need to solve them again?
When a software developer has a problem, specifically a common problem, so, the person will try to find out if anyone already did the job solving, but before he/she will try to resolve it.  Most developers probably don't want to reinvent the wheel.  Thus design patterns are there for these situations. Unfortunately there are a lot of developers who still refuse to use a few patterns, mostly because they just don't know them or even don't know how to fit those patterns into some problems.

Main topic
The concept of design patterns will be introduced together with its uses, benefits and constraints. 

Sub topics
- Singleton pattern 
+  Cases where singleton pattern can be applied
+  Discussion on the choice of singleton pattern
+  Examples in Go language, PHP and JavaScript

- Factory pattern 
+  Cases where factory pattern can be applied
+  Discussion on the choice of factory pattern
+  Examples in Go language, PHP and JavaScript

- Builder pattern
+  Cases where builder pattern can be applied
+  Discussion on the choice of builder pattern
+  Examples in Go language, PHP and JavaScript

- Adapter pattern
+  Cases where adapter pattern can be applied
+  Discussion on the choice of adapter pattern
+  Examples in Go language, PHP and JavaScript

- State pattern
+  Cases where state pattern can be applied
+  Discussion on the choice of state pattern
+  Examples in Go language, PHP and JavaScript

- Template pattern
+  Cases where template pattern can be applied
+  Discussion on the choice of template pattern
+  Examples in Go language, PHP and JavaScript

Conclusion
There are a lot of other useful design patterns.  I have tackle some important and most used design pattern.  This is an introductory guide to design patterns, one should be in a good place to pursue other design patterns like Chain of responsibility, facade, strategy, Object Pool, Prototype, Proxy, Flyweight.  However one should pay attention when using design pattern as a developer needs to adapt the design pattern to his/her problem and not try to adapt his/her problem to the design pattern. If the person needs to do it, it is probably not the right design pattern for this problem.  

About: Jeshta Bhoyedhur
Back-End Developer, LSL Digital

Back-End Developer at LSL Digital, La Sentinelle Ltd. I work primarily with GoLang and progressive JavaScript framework such as VueJS. Winner of WebCup 2018. 

Twitter: https://twitter.com/jjeshta
LinkedIn: https://www.linkedin.com/in/jeshta-bhoyedhur/