Now one question. Should I have different subclasses for each unit or have one unit class that loads a unit file which holds the unit data(speed, attack values, model...)? Subclass approach is cleaner and maybe be more flexible but the one class approach makes it easer to add new units and customise them, and you don't have to recompile the game to add units.
For Stratagem, we have chosen the one-class-plus-data-files way. I agree it's way more easy to add new units and to do a "flavor/theme" of a game without knowing anything to code.
If you want more flexibility, just add the possibility in your data-file (XML is a good idea) to have a script file (e.g. BeanShell, Groovy, Rhino, NetRexx, Jython, JRuby, ...).