Recipes for object oriented patching

What’s happening in your workshop?
We’ll review object-oriented thinking by playfully looking at some object graphs.
We’ll then start a deep dive into different “design patterns”, most of them applicable to any object-oriented programming language. We’ll of course learn how to apply those in VL, but also appreciate that those ideas are general algorithmic ideas that were discovered by users of object-oriented programming languages decades ago, and we’re just willing to benefit from what others discovered. We want to understand those recipes and how to apply which one of them how.

What will people learn?

  • Defining Interfaces
  • Strategy pattern. How can we clean up our FlipFlop & TogEdge-based patch and turn it into something that cleanly represents the different states our patch can be in? Without using external Automata tools. We’ll see how Elementa makes use of this idea in every Widget.
  • Composite pattern. How do we build a node-set that plugs together nicely, like the e.g. Skia nodes do?
  • Adapter pattern. We’ll only look at examples of this: LayerElementum, SkiaRenderer (…) all of which are gluing one composite-based system to the next by introducing an adapter.
  • Observer pattern. We’ll zoom out of the messy details of the IObservable-, Reactive- and async- world and try to get a better understanding of how those are applications of the observer pattern and what they really do. We’ll see how Channels add to the topic.
  • We’ll appreciate that there are more patterns to be discovered and there are beauties like the Entity-Component pattern, but we’ll also try to learn which one is worth the effort and suits us best when.

Who is it for?
Everybody who is willing to invest into different proven patching ideas.

What knowledge do you presume your participants have?
Confidence in how to define a data type. This workshop can help.

A session is 3h. How many sessions does your workshop need?

What’s the teaching level?

How do you qualify for the topic?
I am a devvvv.