Livestreams

Agenda and webinar materials: Design Patterns and Modern C++, May 24th

Hi!

On May 24th, we plan to run a webinar about design patterns in modern C++.

Design patterns may be ‘oh so 90s’ but they are as relevant as ever, having been adopted in all major OOP languages and even beyond (e.g., in JavaScript). Patterns arose in 1994 from the infamous Gang of Four book and continue to be as useful to this day as they were back then, now bolstered by improvements in both the language and the libraries.

This webinar covers a cross-section of design patterns (not all of them from GoF, mind you), covering both their canonical implementations as well as possible improvements.

Here are some of the things we’ll take a look at:

  • The Adapter pattern. Dmitri (our speaker) just visited C++Now 2016, and many people lamented their companies having 3-4 custom string classes. Why is that? We’ll discuss the deficiencies of std::string and how an adapter can help make a string user-friendly.
  • The Builder pattern. Not only are we going to implement the standard Builder, but we’ll take a look at its variations: the fluent builder, a Groovy-style builder (possible thanks to uniform intialization) and a multi-faceted builder, which exposes several sub-builders to initialize different aspects of an object.
  • The Specification pattern. Given a database of products, how do you write an efficient, extensible filtering mechanism? And if you need to extend it later on, how can you do so without violating the Open-Closed Principle?
  • The Maybe Monad. We’ll finish off our discussion with a look at a monad (functional design pattern) called Maybe. We’ll present a simplified version of the monad, which makes implicit the process of checking for the presence or absence of an object.

You can also find a project we’ll be using during the webinar on a GitHub. If you are using CLion, simply call VCS | Checkout from Version Control | GitHub and provide a link to the repository.

And don’t forget to register to the webinar!

image description

Discover more