Design patterns

30 Nov 2023

Design patterns are more intricate than one might initially assume. Upon first encounter with the term “design patterns,” my initial association was with the visual patterns present in the pages I design—containers, navigation bars, footers—elements commonly found in various websites. However, the essence of design patterns, as articulated by Christopher Alexander, extends beyond the superficial. According to him, a design pattern identifies a recurring problem in our environment and outlines a core solution that can be applied repeatedly, ensuring flexibility and avoiding repetition.

Delving into the depth of design patterns reveals their remarkable nature. Originating from the influential Gang of Four in software development, design patterns serve as reusable solutions to common problems. They function as templates applicable across diverse situations. Reflecting on my experience, I realize that I’ve unknowingly incorporated design patterns into my web applications. The templates provided by my professor, now recognized as design patterns, have been instrumental in streamlining my work and enhancing the functionality of my websites.

Considering past web applications, I find that I’ve extensively employed design patterns without explicit awareness. The meteor templates given by my professor, unbeknownst to me at the time, served as design patterns that significantly facilitated my work. Without this underlying structure, constructing web applications from scratch would have proven challenging, impacting their functionality and overall quality.

Taking my ICS 314 (Software Engineering I) final project, “flea market” as an example, the application of design patterns becomes evident. One such pattern employed is the observer design pattern. Upon user sign-in, user can see which published item information, as well as sellers and buyers transactions comminicate through email and mobile phone messages. No overly complicated operations required. The effective use of design patterns not only makes my development process smoother, but also enhances the overall functionality of my web application.