Un patrón de diseño en el ámbito de la informática puede definirse como:
- Una técnica para flexibilizar el código haciéndolo satisfacer ciertos criterios.
- Un proyecto o estructura de implementación que logra una finalidad determinada.
- Un estilo que permite trabajar con un lenguaje de programación de alto nivel.
- Una manera más práctica de describir ciertos aspectos de la organización de un programa.
- Un nuevo paradigma para establecer conexiones entre componentes de un programa.
Son muchos los patrones de diseño, pero en esta oportunidad explicaremos en líneas generales uno en particular denominado "Fábricas" o en inglés "Factory Method", y adicionalmente se elaborará un ejemplo en Java cumpliendo con las especificaciones de dicho patrón de diseño.
En el "Factory Method" básicamente se define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos. De un modo más facil se puede decir que se define una interfaz para crear objetos de tipo genérico permitiendo a las subclases decidir que tipo de objetos concreto crear. Veamos paso a paso el siguiente ejemplo:
Alberto es un joven muy emprendedor, y ha decidido crear un negocio para poder mantener sus estudios universitarios. Su negocio consiste en la venta de chocolates a domicilio pero aun no sabe donde conseguirlos. Caminando de regreso a casa, observa en un anuncio publicitario que una empresa venezolana muy conocida "Savoy" la cual elabora toda clase de chocolates. Elaboremos un codigo en el cual el comprador pueda solicitar a la fabrica una produccion en serie de varios chocolates.
Creamos una clase abstracta "ClienteAbstracto" en la cual vamos a definir un método que puede hacer una solicitud de "manufacturar" un producto en general y adicionalmente una firma de método en la cual se establezca el proceso de manufacturación el cual sera "maquinaMezcladora". El codigo es el siguiente:
Ahora creamos una clase "ClienteDefinido" la cual hereda de "ClienteAbstracto". Básicamente esta clase se encarga de implementar el método "maquinaMezcladora" para generar un producto especifico de acuerdo a las exigencias del comprador. El código es el siguiente:
Ahora generamos una Interface "ProductoGeneral", la cual contiene una firma de metodo que permite trabajar con dos ingredientes fundamentales para la elaboracion del producto general. El codigo es el siguiente:
Seguidamente procedemos a la creacion de una clase "ProductoEspecifico" la cual implementa de "ProductoGeneral". Esta clase se encargara de implementar la metodologia para trabajar con los ingredientes y asi elaborar un producto final. El codigo es el siguiente:
Finalmente creamos nuestra clase "Main" la cual se vera de esta forma:
Ahora muchos se preguntaran: "AJA!! pero como funciona??". Bueno comencemos desde la Linea 13 del "Main":
- Comienzo definiendo un comprador de tipo "ClienteAbstracto", de esta forma este individuo podra en un determinado momento gestionar ante una fabrica la manufacturacion de un producto en general.
- Al comprador le asigno un "New ClienteDefinido()" esto con la finalidad de establecer los parametros de fabricacion del producto, que en este caso seria la implementacion de la "maquinaMezcladora".
- Al producto "chocolate" de tipo "ProductoGeneral" le asigno lo que retorne de la manufacturacion siguiendo los parametros establecidos por el comprador.
- Finalmente al chocolate le agrego los ingredientes que desee el comprador.
Todo este proceso generara la siguiente salida:
Y así es como se implementa el "Factory Method".
Facil no? :D
No hay comentarios.:
Publicar un comentario