Source: http://stg-tud.github.io/eise/WS11-EiSE-18-Factory_Method_and_Abstract_Factory_Design_Pattern.pdf