Here’s one example: State Machine Plugin
It’s a pull state machine where state switching is delegated to the states and the machine itself only handles which state is active.
No they do not. That’s just what you are used to, because you are used to the Manager Anti-Pattern.
There are many ways to handle this kind of connection. An Autoload with signals, assuming the parent node is a centralized source, or recursively looking for a class up or down the tree, to name three.
Actually, your thinking is not very OOP. OOP has four pillars: Encapsulation, Abstraction, Inheritance, and Polymorphism. Having a Manager is an anti-pattern because it causes you to break encapsulation.
Yes, what we are telling you will likely require a rework, but you asked for feedback.
Actually, this is a common programming practice that was popularized by Ruby on Rails. The idea being that if you had to describe a collection of something, pluralizing it made it clear that it was meant to be a collection of singular items. So while it may take some time for you to wrap your head around the idea, it is not likely to be misread by experienced developers.
Except, you could combine the Action Manager and Action Container into one object called Actions - and then delegate things that don’t belong there into the Action objects themselves. Which would improve the object-orientedness of you design by improving encapsulation, and it would sharpen your interfaces (abstraction).