Ecco come cambierebbe la creazione di un nuovo oggetto, nel nostro esempio una lista di film, da un approccio "classico" con metodi setter...

    Movie movieBladeRunner = new Movie();

    movieBladeRunner.setTitle("Blade Runner");
    movieBladeRunner.setActors(Arrays.asList("Harrison Ford", "Rutger Hauer"));

    Movie movieStarWars = new Movie();

    movieStarWars.setTitle("Star Wars");
    movieStarWars.setActors(Arrays.asList("Carrie Fisher", "Harrison Ford"));

    List<Movie> movies = Arrays.asList(movieBladeRunner, movieStarWars);

...ad uno basato su fluent builder.

    List<Movie> movies = Arrays.asList(
    MovieBuilder.movie().withTitle("Blade Runner")
                        .withAddedActor("Harrison Ford")
                        .withAddedActor("Rutger Hauer")
                        .build(),
    MovieBuilder.movie().withTitle("Star Wars")
                        .withAddedActor("Carrie Fisher")
                        .withAddedActor("Harrison Ford")
                        .build());

Al di là  dell'utilizzo del builder pattern che è ovviamente dipendente dal contesto, si può dire che qualcosa in leggibilità  si guadagna, molto resta ovviamente al gusto e allo stile di chi programma.

2 CommentiDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *

Certo che si può anche senza plugin, Java ha una reflection API di tutto rispetto :) Questo plugin copre una casistica abbastanza particolare, ed é un piccolo aiuto agli sviluppatori che vogliono utilizzare interfacce fluent per la creazione di oggetti.

Giuseppe de Santis
Giuseppe de Santis

E' necessario un plugin in Eclipse per generare codice? Non si riesce a generare una classe a runtime come in ruby, o un oggetto in javascript che in base a una dichiarazione mappa una classe con certi metodi?

francescoagati
francescoagati