Invisible_Design

24 Apr 2019

First Impression

When I first noticed this ‘design patterns’ module on our course schedule, I came up with something visually fancy and fashionable. Since I had no idea what this thing would be, I was quite surprised because I have never imagined that this ICS 314 course would also teach students something that graphic designers do. Well, I was totally ignorant. Design Patterns in software engineering is a far different from what normal people would easily imagine.

Design Patterns

By definition, a design pattern is a general and reusable solution to a commonly occurring problem in software design. It came to the fore by a book named “Design Patterns: Elements of Reusable Object-Oriented Software” which is also known as “Gang of Four”. A design pattern is more like a template which can be used depending on many different situations. Factory, Singleton, Observer, MVC are some of most famous design patterns in software engineering field. For example, this Factory problem description creates objects without exposing underlying logic, potentially returning objects associated with different classes. As a result, it returns some additional flexibilities such as objects from different classes.

My Application

What I realized while learning design pattern module is that actually I have been using it without noticing. Iterator design pattern would be one of the most frequently used patterns for me. Iterator design pattern provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation. Life would be easier if we only need to use whether for loop or while loop, but things get complicated when we have to deal with collection of different data types along with complicated structure. Iterator design pattern allows me to iterate through data collection as desired. I was able to work efficiently since I didn’t have to start from the scratch and also easily understand different kinds of algorithm with iterators.