This week, for my final blog, I’ve continued the recent trend of developing the fundamentals of software engineering. To have any hope to be a decent programmer I need a good foundation of knowledge so I can adapt and learn easily in my career. This week, I took the time to make sure I understood the different types of design patterns. I.e. creational, behavioral, and structural. I chose the source above because it gave me exactly what I wanted. A concise definition of what the types were. The website also goes in depth about the GoF patterns as well in other articles so it’s a good resource overall.
Before explaining what the types are, we’re given a summary of what patterns are, the GoF design principles, and why we use design patterns. In this part of the article, only one thing stuck out to me. My opinions of patterns shifted somewhat. These patterns are documented so that newer developers can learn design in a much easier, faster way. There’s no need to reinvent the wheel, I should learn from my predecessors’ work. The patterns exist to solve common problems in object oriented design so it’s best I know what problems they solve, or at least, where to look for a solution.
That’s why understanding the pattern types is essential. And, although it’s an admission of ignorance, I can say that I understand the types better now. Or rather, what they achieve. Creational hides creation logic while giving more flexibility for deciding what objects are needed. Structural helps organize class hierarchy and relationships. And, lastly, the only type I’ve active experience with, behavioral. It concerns itself with the communication between objects of a program. Not new to me but it’s a better articulation than my previous understanding.
From this source, I know I’ll be a more complete, competent developer. It’s immediately applicable both as a student and an employee. With this knowledge I’ve got an insight into what the individual design patterns achieve. As a student, which all developers are, it’s vital to my research and growth. Knowing their nature also helps with designing since I now know I have a resource for solving Object orientated problems. Whether I’m working in a team or on a solo project, there’ll be times I need to think for myself and solve problems.
This is an extremely basic topic and my past few post have been near the same level. But I think it’s imperative that I understand core concepts and basics completely. I wont always know how to do something, but knowing what to do is the first step to getting past obstacles.