I think people are getting hung up on the "replace if-else", but that isn't the point of this article. This article is about decoupling the save type from the save logic. By using a control structure to decide on what method to use to save, you are forced to change this code when you want to store to the cloud or some other storage. If instead, you use a strategy like this, you just need to add a new sink and register it. The actual save logic does not change. What's more, most of this can be wired up by a senior and all a junior needs to know is to inject the classes like normal and the save takes care of it. Is there some "magic" sure, but by the time the junior realizes this, they are probably ready to understand the pattern anyway.