Design Patterns are essentially different methods of programming which are tailored to different situations. You could use Model-View-Controller’s (MVC)’s which are primarily used in web development with Model being used in backend development like working with data, View working frontend interfaces, and Controller being what connects the two. These are often very useful in Software Engineering as it takeout a lot of the guess work for many beginning engineers and gives them a good foundation to work from. But just like how in history we learn not to repeat mistakes in software engineering there are a types of design patterns which should not be used called Anti-Patterns’s. Anti-Pattern’s are design patterns which should not be implemented in code for example, Copy and Paste is a type of Anti Pattern which essentially based on its name from what you can tell essentially is code which has been copied and pasted from another part of the program which the usually solution is to create a function to fix it.
In my code for the longest time I never really understood how these ideas came about on how they created some types of design patterns. Some design patterns I found myself using without realization were the Prototype pattern, Singleton, and at work I found myself using the Observer when I wanted to do certain tasks. After going over the design patterns module in my Software Engineering class I learned different Design Patterns such as Publish-Subscribe, and MVC. I also learned of different Anti-Patterns I was using such as Lava Flow, Spaghetti, and Copy and Paste. But I’ve learned to recognize those Anti-Patterns and correct them.
Design Patterns are there to help make life easier and allow you the programmer to be more productive while writing code. Although they might be tough to start of with and confusing. I understand why it can be confusing at first but it’s like learning the keyboard shortcuts in your favourite text editor it maybe a pain to learn at first but when you power through and use it you’ll find yourself using it more often which will make you a better programmer. Overall design patterns are like blueprints which have been made to help new programmers to adapt quickly to match experienced programmers in which over time as those new programmers get experienced they will create their own design patterns.