They say history repeats itself, which has been proven time and time again. It may not seem like it, but problems you may have encountered have been dealt with or are being dealt with by another person. The solutions to our problems may be different from others. Despite that, the answer we seek usually has a similar structure conceptually. In 1977, an architect named Christopher Alexander coined the term “design patterns”. Which he describes this as a solution to problem that may be used in multiple context.
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. These are specific structures/information which may be used to approach a problem. They are powerful tools which help resolve issues more efficiently.
During my experience in my software engineering class, I’ve encountered a few design patterns which I found helpful for my final project. The publish-subscribe design pattern, specifics how available we want data to be seen. This pattern has guided me to create an application which is highly user-based, user may be limited to view data they have created while admins may view data created from all users. The front contoller design pattern handles all the requests in a web application. The implementation of centralized control avoids using multiple controllers is desirable in order to enforcing application-wide policies such as user tracking and security.
Things that have happened in the past will or tend to happen again in one way or another. We are fortunate to have design patterns that guide us in the problems we face today. Putting the knowledge learned from others will only benefit our skills as engineers. Design patterns will be a powerful asset to add to your collection.