Pages: [1]   Go Down
Print
Author Topic: Pattern Building  (Read 567 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« on: 24-10-2010, 11:06:05 »

Stavo studiando questo argomento e vorrei capire alcune cose.
Ho dato uno sguardo a come se ne parla qui:

http://it.wikipedia.org/wiki/Builder

E' tutto molto chiaro, solo che vorrei avere un riscontro nel codice visto a lezione:

Code:
// Builder Pattern - Pages 14-15

public class NutritionFacts {
    private final int servingSize;
    private final int servings;
    private final int calories;
    private final int fat;
    private final int sodium;
    private final int carbohydrate;

    public static class Builder {
        // Required parameters
        private final int servingSize;
        private final int servings;

        // Optional parameters - initialized to default values
        private int calories      = 0;
        private int fat           = 0;
        private int carbohydrate  = 0;
        private int sodium        = 0;

        public Builder(int servingSize, int servings) {
            this.servingSize = servingSize;
            this.servings    = servings;
        }

        public Builder calories(int val)
            { calories = val;      return this; }
        public Builder fat(int val)
            { fat = val;           return this; }
        public Builder carbohydrate(int val)
            { carbohydrate = val;  return this; }
        public Builder sodium(int val)
            { sodium = val;        return this; }

        public NutritionFacts build() {
            return new NutritionFacts(this);
        }
    }

    private NutritionFacts(Builder builder) {
        servingSize  = builder.servingSize;
        servings     = builder.servings;
        calories     = builder.calories;
        fat          = builder.fat;
        sodium       = builder.sodium;
        carbohydrate = builder.carbohydrate;
    }

    public static void main(String[] args) {
        NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).
            calories(100).sodium(35).carbohydrate(27).build();
    }
}

Qui abbiamo tutto in una classe..allora il Builder è quello all'interno della classe, e su queso ci siamo, la componente Director chi sarebbe? Product sarà il prodotto finale, e invece il ConcreteBuilder chi è in questo caso?
Per finire, non ho capito nel Main:

Code:
NutritionFacts cocaCola = new NutritionFacts.Builder

L'ultima cosa (.Builder) cosa fa? Chiama il costruttore della classe Builder interna a NutritionFacts?

Grazie.
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Pages: [1]   Go Up
Print
Jump to: