Why does it seem to me that using Strategy is just putting off the if/else to the Factory? Using Strategy, doesn't a Factory need to figure out which concrete class to instantiate, and doesn't it do so by if/else?
Is another option to use a Map/List somehow, and have the keys be a name of the class to instantiate, and maybe have the class using the Factory pass in a name?