Imagine a bustling city where the roads represent data flow in a software system. Traffic can be seen as the performance of the system bottlenecking and roadwork construction as modifications in the system. In this scenario, design patterns can be seen as traffic rules that keep traffic flowing smoothly and efficiently, no matter how bad the traffic is. I’ve driven through many cities, navigating through many complex data flows. Each city having their own design pattern that works well for them such as maybe a round about, a jug handle left turn, or a 4 way crossing.
I feel like I haven’t used much if any of the design patterns besides using the Singleton pattern in my works of code back in Information and Computer Science 212 class. I feel I’d be able to relate it better to in-person uses. A particular design pattern called the Observer Pattern seems like it would be very helpful for when I was classed in a Weather job slot while in the Air Force. Weather can change at a moments notice so the community (the subscribers) I feel would want real-time rapid updates. Just joking, maybe there is one current project that I can relate Observer pattern to. Currently, I’m on a team called “Club Up” and we are tasked to create an app which students can use to peruse a directory of clubs available at University of Hawaii at Manoa and be able to get notified of any updates. Observer design pattern comes into play in our project obviously because as the club directory and the respectable clubs get updated, the students (the subscribers) will get notified in real time; at least that is what we are striving towards.
In software engineering, design patterns are like the map schema used in navigation like on google maps. Just as google maps use proven routes to solve getting from point A to point B, software engineers use design patterns to solve common problems in software development. These patterns provide a tested and reusable solution to frequent problems during software engineering, making code more scalable and maintainable to adapt to any issue. They improve the clarity and efficiency of communication within the teams that use such design patterns. Using patterns like Singleton and Observer, you can manage data flow to ensure smooth and efficient workflow in any software engineering goal, just like how google maps will choose the best route algorithm.