package de.bht.fpa.factorymethod.v3; import de.bht.fpa.factorymethod.v2.Horse; import de.bht.fpa.factorymethod.v2.Person; /** * This class has following responsibilities: * <ul> * <li>makes a distinction of kind and gender</li> * <li>creates the {@link Horse} and {@link Person} instances</li> * </ul> * * @author benjaminhaupt & siamakhaschemi */ public class MammalCreator { public Mammal getMammal(String kind, String gender, String name) { if (kind.equals("person")) { if (gender.equals("f")) { return new Women(name); // process the children to build tree structure } else if (gender.equals("m")) { return new Man(name); } throw new IllegalArgumentException("unknown gender type:" + gender); } else if (kind.equals("horse")) { if (gender.equals("f")) { return new Mare(name); // process the children to build tree structure } else if (gender.equals("m")) { return new Stallion(name); } throw new IllegalArgumentException("unknown gender type:" + gender); } throw new IllegalArgumentException("unknown kind type:" + kind); } }