Another Wednesday can only mean another IPM. My presentation portion when great! I did my presentation on the dependency inversion principle and was told it was another great one. I have felt like my presentations have gotten much better, and my mentor seems to think so also. I also showed off the new features I was asked to implement in my tic-tac-toe game. Modes for Human vs Human , Computer vs Computer, and different dificulty levels (Hard, Medium, and Easy). Everything was up to expectations, and I was told great job!

Then we planned for this upcoming week. I was tasked with making a 4 x 4 mode in my tic-tac-toe, doing a new kata called wa-tor (which requires a GUI, and is quite intimidating TBH), and doing a presentation on one of the Gang of Four Design Patterns. I had never heard of the Gang of Four Design Patterns before today, so the best place to start is just talking about the general theme, which I’ll do here.

Gang of Four

The Gang of Four (which I’ll refer to as Go4 from this point forward) consists of four (shocking I know) guys, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. These guys met at the Object-Oriented Programming, Systems, Languages, and Applications conference in 1990. They decided at that moment they wanted to write a handbook for system architecture.

Design Patterns

The hand book they discussed writing became a reality October 21st, 1994 under the name Design Patterns: Elements of Reusable Object-Oriented Software. The book is broken into three sections.

  • Creational Patterns
  • Structural Patterns
  • Behavioral Patterns

Creational patterns are ones that create objects, rather than having to instantiate objects directly. This gives the program more flexibility in deciding which objects need to be created for a given case.

Structural patterns concern class and object composition. They use inheritance to compose interfaces and define ways to compose objects to obtain new functionality.

Behavioral design patterns are specifically concerned with communication between objects.

Lasting Legacy

The Go4’s work on design patterns has had a lasting impact on software development. Their principles have shaped the way developers think about and approach object-oriented programming. By providing a common vocabulary and a set of proven solutions, they have enabled developers to create more robust, flexible, and maintainable software.

Even though we’ve had 30 years of technological advancement, the patterns introduced by the Go4 remain relevant and useful. They remind us that while technology evolves, the fundamental principles of good design endure. Whether you’re a seasoned developer or just starting out, revisiting these patterns can provide valuable guidance and inspiration.

So, the next time you’re faced with a design dilemma, consider looking to the Go4’s design patterns. They just might hold the key to unlocking a more elegant and effective solution.