Abstracting a set of functionalities into a class which provides a higher level interface often requires tough design decisions. Users who do not have the exact requirements for which the abstraction is optimized will suffer a syntactic or run time overhead as a result.
Alexandrescu's famous "policy-based design" provides a mechanism to allow the user to extend and customize an existing abstraction in order to fine-tune its functionality for many different use cases. This is however limited to use cases where each policy more or less represents a compile time strategy pattern.
Alas, not everything is a strategy pattern. In this talk I will explore the viability of a more agent-pattern-like paradigm where each policy knows its requirements and publishes its capabilities. In this paradigm, glue code connecting any valid set of policies is automatically generated using template metaprogramming. This allows much more powerful customizations while maintaining static linkage.
YOU MAY ALSO LIKE:
- Lightbend Apache Spark for Scala - Professional (in London on 28th - 29th March 2019)
- Lightbend Akka for Scala - Professional (in London on 8th - 9th April 2019)
- Lightbend Akka for Scala - Expert (in London on 10th - 11th April 2019)
Agent based class design, C++ with a robot glue gun
Odin spent much of his career doing electronic engineering work including programming micro controllers. At one point he got fed up with popular design practices and the technology stack in the embedded domain and decided to try to fix it. As it turns out that rabbit hole is deep and it leads to C++ template metaprogramming.