Became an issue when I investigated other Maze-making algorithms. Rather than having everything in one lump of code, have a plugin for each type of algorithm. This also implies that the maze types don't have to be child objects either, but plugins themselves -- rectangular mazes would be Games::Maze::{SomePluginName::}Rectangle, hex mazes would be Games::Maze::{SomePluginName::}Hexagon, and so forth.
Working on this as well, works well when using Moo. I already have 2 Algorithms implemented: BinaryTree and Sidewinder (neither are very interesting mazes).
Became an issue when I investigated other Maze-making algorithms. Rather than having everything in one lump of code, have a plugin for each type of algorithm. This also implies that the maze types don't have to be child objects either, but plugins themselves -- rectangular mazes would be Games::Maze::{SomePluginName::}Rectangle, hex mazes would be Games::Maze::{SomePluginName::}Hexagon, and so forth.