public static Profesor crearProfesor(int queProfesor) { FabricaDeProfesores fabrica = null; switch (queProfesor) { case LOCAL: fabrica = new FabricaDeProfesorLocal(); break; case VISITANTE: fabrica = new FabricaDeProfesorVisitante(); break; case SUPLENTE: fabrica = new FabricaDeProfesorSuplente(); break; } return(fabrica.crearProfesor()); }
// Variante 3: Se trabaja con una fábrica concreta public static Curso crearCurso3(List <Alumno> alumnos, FabricaDeProfesores fabrica) { Profesor p = fabrica.crearProfesor(); return(new Curso(p, alumnos)); }
// Variante 2: La fábrica se setea fuera del método que pide la creación de los objetos public static Curso crearCurso2(List <Alumno> alumnos) { Profesor p = FabricaDeProfesores.crearProfesorPreseteado(); return(new Curso(p, alumnos)); }
// Variante 1: El propio método elige que crear public static Curso crearCurso1(List <Alumno> alumnos) { Profesor p = FabricaDeProfesores.crearProfesor(FabricaDeProfesores.SUPLENTE); return(new Curso(p, alumnos)); }