Abstract Factory Exmaple.