11 de febrero de 2014

FluentInterface


El termino FluentIterface es creado por Eric Evans y Martin Fowler, con el cual se crea un estilo de codigo mas fluido.

La intencion es que cuando se tenga que agregar multiples propiedades (no solo propiedades, tambien es aplicable a operaciones) a un objecto, este se haga de manera mas fluida.

Ejemplo:

    private void fluentInterface(Cliente cliente){
       
        cliente.nuevaOrden()
                .agregarItem(1, 20.3, "Peliculas Accion")
                .agregarItem(2, 10.4, "Pelicula Infantil")
                .procesar();

     }
    

     private void tradicional(Cliente cliente){
       
        Orden orden = new Orden();
        Item item1 = new Item(1, 20.3, "Peliculas Accion");
        orden.agregarItem(item1);
        Item item2 = new Item(2, 10.4, "Pelicula Infantil");
        orden.agregarItem(item2);
        cliente.agregarOrden(orden);
        orden.procesar();
    }



El ejemplo es basico, pero se da entender que significa FluentInterface, lo que se quiere hacer con esto es que el codigo sea facil de leer y entender. Y que todo se vea como una unidad.




Para usar FluentInterface es bueno empezar por el encadenmiento de metodos (Method Chaining) , es el punto de partida para crear buenas Interfaces Fluidas.

Ejemplo de encadenamiento de metodos:

public class Observacion {
   
    private String autor;
    private Date fecha;
    private String comentario;

    public String getAutor() {
        return autor;
    }

    public Observacion setAutor(String autor) {
        this.autor = autor;
        return this;
    }

    public Date getFecha() {
        return fecha;
    }

    public Observacion setFecha(Date fecha) {
        this.fecha = fecha;
         return this;
    }

    public String getComentario() {
        return comentario;
    }

    public Observacion setComentario(String comentario) {
        this.comentario = comentario;
         return this;
    }
  
}


Modo de Uso:

***

        Observacion observacion = new Observacion();
       
        observacion.setAutor("Andrexweb")
                .setFecha(new Date())
                .setComentario("FluentInterface");


***


Bibliografia:
Martin Fowler - FluentInterface
Wikipedia en Ingles
Wikipedia en Español

No hay comentarios:

Publicar un comentario