Summary
If you’re reading this, then you’ve made it through the Strategy pattern, which should really be called the delegation pattern! We have a working prototype that can do similar work (sorting and behavior actions) in different ways while also allowing us to dynamically switch how the work is done at any time. Our system also lets us work with ScriptableObject
assets instead of hardcoding our concrete strategies, and everything is nicely decoupled using interfaces (not bad for an afternoon of code)!
When using the Strategy pattern, remember that each family or grouping of strategies will need their own strategy interface, concrete strategies, and context. It also pays to think about how your project gets each concrete strategy the data it needs – it can be passed in from the context, stored in the strategy interface, or a mix of both. The only potential coupling downside with this pattern is that the client needs to know about all the available concrete...