CreateMaze
è la funzione che crea un'istanza degli oggetti. IMO, secondo lo schema di fabbrica non dovremmo sovraccaricare o modificare o riscrivere la funzione che crea l'istanza degli oggetti.
Ma nell'esempio, la funzione CreateMaze restituisce un labirinto *. Quindi, ora se dobbiamo scrivere una classe EnchangedMaze, dovremo riscrivere la funzione CreateMaze per restituire un puntatore di EnchantedMaze?
Da: link
Changing the layout means changing this member function, either by overriding it—which means reimplementing the whole thing—or by changing parts of it—which is error-prone and doesn't promote reuse.
Non è questo che il modello di fabbrica vuole evitare?
Che punto mi manca?