Underc0de

Programación General => Java => Mensaje iniciado por: LKI en Octubre 21, 2014, 02:14:34 AM

Título: Factory Method Java
Publicado por: LKI en Octubre 21, 2014, 02:14:34 AM
Buenas gente, en este nuevo tutorial tratare de implementar y explicar lo que se conoce como "Factory Method". Veamos que dice la WIKIPEDIA:
CitarEl patrón de diseño Factory Method consiste en utilizar una clase constructora  dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del Abstract Factory, en la que la clase abstracta tiene métodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.

Beneficios:
Manos a la obra..
Código (java) [Seleccionar]




public class Telefono {

//ATRIBUTOS Y METODOS...

public Telefono() {
// MÁS CODIGO POR ACA
}

}


public class Paloma extends Ave{

//ATRIBUTOS Y METODOS...

public Paloma() {
// MÁS CODIGO POR ACA
}

}



public class Reliquia {

//ATRIBUTOS Y METODOS...

public Reliquia() {

// MÁS CODIGO POR ACA
}

}


Código (java) [Seleccionar]
public interface Comunicador {

public void enviarMensaje(String mensaje);
}


Código (java) [Seleccionar]

public class TelefonoCelular extends Telefono implements Comunicador {

@Override
public void enviarMensaje(String mensaje) {

//Hacer lo que corresponda aqui

}

}



public class PalomaMensajera extends Paloma implements Comunicador{

@Override
public void enviarMensaje(String mensaje) {

//Hacer lo que corresponda aqui

}

}

public class Telegrafo extends Reliquia implements Comunicador {

@Override
public void enviarMensaje(String mensaje) {

//Hacer lo que corresponda aqui

}


}


Código (java) [Seleccionar]


Comunicador c1 = new TelefonoCelular();
Comunicador c2 = new PalomaMensajera();
Comunicador c3 = new Telegrafo();

//E invocar unicamente al metodo enviarMensaje()


Pero la verdadera importancia de todo esto la veremos a continuación:

Supongamos que tenemos una clase utilitaria llamada ComunicadorManager con un metodo estatico crearComunicador:

Código (java) [Seleccionar]

public class ComunicadorManager{

public static Comunicador crearComunicador{

     
      //retornamos cualquier objeto que necesitemos sin afectar en lo mas mínimo al programa ejemplo:
      //return new TelefonoCelular();
     //return new Telegrafo();

   return new PalomaMensajera();
   }
}




  Y utilizando esta clase podriamos escribir un programa como el que sigue:

Código (java) [Seleccionar]


public class MiAplicacionDeMensajes {

public static void main(String[] args) {


Comunicador c = ComunicadorManager.crearComunicador();
c.enviarMensaje("Hola, esto es solo un ejemplo!!");

}

}



En este programa utilizamos la clase ComunicadorManager para obtener "un comunicador" a través del cual enviar nuestro mensaje. Lo interesate de esto es que en el método main no hardcodeamos ninguna de las clases que implementan el la interface Comunicador. Simplemente creamos un objeto comunicador utilizando el método crearComunicador y le invocamos su método enviarMensaje.

  Conclusión:


Fuente: Java a Fondo
por: Ing Pablo Augusto SZnajdleder


Título: Re:Factory Method Java
Publicado por: ANTRAX en Octubre 21, 2014, 08:25:25 AM
Buenisimo bro!!
Me voy a guardar el post en favoritos!

Muchisimas gracias!!
Saludos!
ANTRAX
Título: Re:Factory Method Java
Publicado por: Destructor.cs en Octubre 23, 2014, 03:48:19 PM
Para mejorarlo mas todavía, se podria trabajar con un enumerado que contenga los tipos de objetos a crear, y que se pueda utilizar para indicarle a la clase factory que objeto quieres que te devuelva

Saludos