Java 8 鈥 Interfaces funcionales

Interfaces funcionalesSe le conoce como interface funcional a toda aquella interface que tenga solamente un m茅todo abstracto, es decir puede implementar uno o m谩s m茅todos default, pero deber谩 tener forzosamente un 煤nico m茅todo abstracto. Si no te queda claro que es un m茅todo abstracto en una interface, es un m茅todo sin implementar.

Las interfaces funcionales es un nuevo concepto que fue agregado a partir de la versi贸n 8 de Java y cobran su importancia al utilizar expresiones lambda (位).

 

Ejemplo de interfaces funcionales:

 

A continuaci贸n, veremos ejemplos de dos interfaces funcionales v谩lidas: (m谩s…)

Java 8 鈥 Default Method

Default MethodUna de las novedades que trae Java 8 a nivel del lenguaje, son los Default Method o M茅todos default, los cuales permiten agregar m茅todos implementados en las interfaces. Antes de la versi贸n 8 de Java era totalmente imposible definirles cuerpo a los m茅todos de las interfaces ya que nos marcaba error de compilaci贸n.

 

Para agregar un m茅todo default solo ser谩 necesario marcar un m茅todo con el operador default聽, veamos un ejemplo de c贸mo se implementan:

 

 

Los m茅todos default se utilizan cuando es necesario implementar un cuerpo sin la necesidad de tener que implementar por separado una clase abstracta, adem谩s los m茅todos por default se pueden sobrescribir en caso de que la implementaci贸n por default no cumpla con lo que requerimos. Tenemos que resaltar que los m茅todos default no remplazan a las clases abstractas, pues estas 煤ltimas son mucho m谩s potentes, debido a que nos permiten definir propiedades a nivel de clase, constructores y m茅todos privados. Veamos una limitante de los m茅todos default:

(m谩s…)

Patr贸n de dise帽o Observer

UMLEste es sin duda uno de los patrones mas utilizados cuando trabajamos con aplicaciones de escritorio o al utilizar la Event-Driver Architecture(EDA).Un Observer es un componente el cual lo 煤nico que hace es estar atento a los eventos que el Target realiza, Cuando Target realiza un cambio o evento este notifica a todos los Observers que est谩n registrados. De esta manera las clases observer ser谩n notificadas del evento que realizo el Target.

 

Para explicar correctamente este Patr贸n de dise帽o le comparto esta imagen:

Observer

Imaginemos un escenario de la vida real para comprender mejor esta patr贸n para lo cual nos ubicamos en el Aeropuerto y estamos esperando a que nos indiquen que podemos abordar el avi贸n por medio de las bocinas que hay en el aeropuerto.

Bien, de seguro no eres el 煤nico que esta esperando el vuelo, de seguro existen muchas personas que esperan el abordaje, En este escenario nosotros junto con todas las demas personas que esperan el vuelo son Observers聽y la bocina es el Tajet聽Ya que todos estamos atento a que nos indique que ya podemos abordar聽lo cual es un evento que realiza la bocina y que nosotros estamos esperando(Observando) para realizar una acci贸n(Abordar). (m谩s…)

Patr贸n de dise帽o Modelo Vista Controlador (MVC)

UMLSin duda este es uno de los patrones de dise帽o mas utilizados cuando desarrollamos una pagina web sin embargo puede que no estemos consciente de que es si.

El patr贸n MVC se ha convertido en un est谩ndar para el desarrollo de aplicaciones que permite separar la aplicaci贸n entres capas que aunque est茅n relacionadas no siempre tiene por que estar juntas. Estas capas son la Vista, el Controlador y el Modelo y a continuaci贸n explico que es cada uno.

Modelo:聽El modelo representa la informaci贸n como tal, representan los datos con los que la aplicaci贸n esta trabajando, ya sea los datos de una tabla, un formulario, etc. Podr铆amos decir que el modelo es la informaci贸n la cual el usuario puede visualizar en pantalla.

Por ejemplo este texto que estas leyendo en este momento es el modelo.

Vista:聽Esta es la representaci贸n gr谩fica o pantalla que estas viendo en este momento, La vista requiere del Modelo para mostrar la informaci贸n en la pantalla.

Controlador:聽El controlador es el puente entre la vista y el modelo, ya que desde el controlador podemos hacer operaciones que cambien el modelo lo cual representa un cambio en los datos de la vista.

 

El patr贸n MVC lo podr铆as ver de la siguiente manera:

MVC (m谩s…)

Patr贸n de Dise帽o Factory

UMLEsta entrada formara parte de un conjunto de entradas dedica espec铆ficamente a explicar los diferentes patrones de dise帽o que existe.

El patr贸n de dise帽o Factory es uno de los mas utilizados ya que nos permite crear en tiempo de ejecuci贸n una Instancia o un resultado a partir de ciertos par谩metros e incluso sin par谩metros.

Patr贸n de dise帽o Factory Method
Patr贸n de dise帽o Factory Method

En este caso desarrollaremos un Factory que nos regrese una instancia a adecuada para conectarnos a distintas base de datos. El ejemplo se centra en que a partir del tipo de base de datos que queremos utilizar podremos conectarnos a ella sin necesidad de (m谩s…)

ReflectionToStringBuilder

Java – Weakreference

Este tema hasta para los expertos en java les puede resultar desconocido y es que siempre creemos que un objeto que no esta referenciado por ninguna variable es candidato para que 聽el Garbage Colector lo elimine para liberar la memoria, sin embargo esto no es todo cierto ya que existen las referencias blandas las cuales (m谩s…)

JPA, Hibernate VS JDBC

JPA HIBERNATE JDBCLos que ya han tenido la oportunidad de trabajar con alg煤n ORM como JPA o Hibernate sabr谩n las bondades que tiene ya que nos permite desarrollar de una forma mucho mas r谩pida y con muchos menos errores en tiempo de ejecuci贸n ya que nos permite modelar nuestras entidad como Clases Java las cuales ser谩n convertidas a las instrucciones Insert, Update o Select seg煤n sea la operaci贸n a realizar. Claro que todas estos beneficios tiene un costo y es que el performance se degrada debido a todas las conversiones que se tiene que hacer para convertir las Entity en Querys y los ResultSet pasarlos a clases ademas que cada registro representa un Objeto en memoria que tendr谩 (m谩s…)

ReflectionToStringBuilder

Que es el Polimorfismo?

Si son nuevos en la programaci贸n seguramente esta palabra les causar dolor de cabeza ya que desde mi punto de vista esta es la caracterizara del paradigma orientado a objetos mas dif铆cil de comprender pero no se preocupen tratare de explicarles lo mas simplemente posible.

El polimorfismo permite que nuestro programa realice tareas que se definir谩n hasta el tiempo de ejecuci贸n. (m谩s…)