Polymorphism, Cohesion, and Coupling; Oh My!
One primary design goal is low coupling and high cohesion, usually accomplished through different applications of polymorphism. Some great designs, however, are difficult to implement without sacrificing performance.
We will discuss the reasons why a design from 1984 is even more relevant to us now, in the world of modern C++. Specifically, we will see that designs which emphasize low coupling and high cohesion provide opportunities for easy composition, and adding features without changing existing code.
After a summarizing the principles for this design, the majority of time will be spent discussing the implementation of a framework that implements the aforementioned design, preserving the benefits, without sacrificing performance.
Template metaprogramming techniques will be used in the implementation, but anyone with basic C++ template experience should be able to follow along.
Jody has been using C++ for the better part of four decades. He remains amazed at how much he does not know after all those years. He has spent most of that time designing and building systems in C++, for use in the high frequency trading space.