2010-09-04 11 views
6

Perché non possiamo fare i diversi passi di costruzione all'interno del costruttore stesso. se i passi di compilazione accettano argomenti perché non possono essere forniti come argomenti per il costruttore e utilizzati all'interno del costruttore per creare l'oggetto.Perché il modello di builder è migliore di un costruttore con argomenti nell'oggetto Classe creato?

AFAIK, nel modello Builder, il client dell'oggetto specifico da creare; allora qual è il vantaggio nell'usare un costruttore invece di un costruttore con argomenti nell'oggetto della classe che viene creato?

risposta

5

Oh! Capisco. Stavo guardando l'esempio di Wikipedia e ho capito perché Builder è utile. È utile, quando il client non sa quali argomenti passare al costruttore in quanto è molto complicato e quindi non può chiamare direttamente il costruttore e ottenere l'oggetto. Di conseguenza, chiede aiuto ai Concrete Builders che sanno quali argomenti passare ai costruttori e quindi ottenere l'oggetto creato.

Fondamentalmente, se il client è quello che passerà per lo più gli argomenti al costruttore della classe il cui oggetto è stato creato, allora Builder non è così utile. Forse è meglio usare il prototipo. D'altro canto, se v'è un piccolo insieme finito di oggetti specifici che possono essere creati dalla classe passando argomenti al costruttore (o chiamando incastonatori) a quella classe e se sono quelli che sono frequentemente utilizzate, allora meglio per incapsulare questo argomento passando cosy nella classe Builder e usarli per creare gli oggetti per te.