GOF from Wiki: finish Abstract Factory