The Essence of Design: Design Patterns

30 Apr 2020

Why Design Your Software?

Having an idea for an app is not even half the battle. A lot of newbies and even intermediate coders can have a hard time knowing where or how to start designing their app or software. Designing your app before you start can make a world of difference in how far you get with your app. I have experienced this first hand with some of my previous apps I’ve tried making before taking this class. My poor idea of design left most of my apps with me having to delete whole code sets to update new features and I had everything stringed together all over the place. I did usually get things for the most part working, but I would always end stuck and unable to continue at some point. The whole idea of this essay is to give you pointers I have learned on design patterns throughout my coding experiences from start to present day.

I Have an Idea! Where Do I Start?

The first thing I do when I have an idea I want to start on is draw. I bought a large whiteboard and I use it to draw out how I want the user interface to look from start to finish. I’ve always found that designing the UI first helped me get a whole lot farther, quicker because I already basically have a template to work from. I also believe drawing can be a good way of communicating your ideas to your colleagues because after you draw your idea, you can send a picture to them to review. A whiteboard definitely isn’t necessary especially with tablets, but I feel more immersed into the idea using a whiteboard.

Which Platform / OS Should I Develop For?

As a beginner programmer, I believe its best to stick to the platforms and operating systems you know and work with daily. When I wanted to take the leap from “hello world” programs to goal driven development, I jumped straight into Android because I have always used android phones and learned that with Android Studio, I can plug my phone in and download my app and play with them. Having my creations on my phone where I can show my friends easily, really motivated me to keep trying to make them better.

Code Design

After you found out what platform to develop for and what development environment is best for you need to start thinking about how you want to approach them problem. For simpler apps, there isn’t much thought that needs to go into to them to get them running, but when it comes to larger software, this is the part when you really have to take a step back and plan your approach if you don’t want to get stuck over and over again like I have done in the past. Luckily, the guys who develop the code you use to write your programs, develop them in such a way to favor particular patterns that when understood, can help guide you to your end goal. There are three main patterns to remember when writing with object orientated languages, and those are creational, structural, and behavioral.

Creational

Creational patterns deal with the creation of objects to make sure that they are dealt with in the most efficient way. For example, the Singleton pattern ensures that only one instance of that object is created. Think the president of the United States as an object in a program.

Structural

Structural patterns consist of getting your software to merge together efficiently. Using adapter patterns, you can merge two incompatible interfaces to work together.

Behavioral

Behavioral patterns dictate the ways objects communicate and limit or expand their reach accordingly. The example chain of responsibility structures the way requests are made between objects.

Conclusion:

Design patterns serve as a guide to producing clean, efficient, and adaptable code that can take you from a messy code to an organized pro with a little research and practice. without proper design, most of your projects will most likely fail and leave you discouraged.