|
AltriJug Articoli Blog Bookmarks ChiSiamo Cinema Eventi FAQ IscriversiAlJug FunnyJug HobbiesAndSports ImparareNuoveCose JavaJobs JavaTraining Libri MailingList Meeting News ProgettiAttivita Shop Software StoriaDelJug SunItalia
CoordinamentoJug PagineDiServizio Manutenzione |
Builder
Intento
Separare la costruzione di un oggetto complesso dalla sua rappresentazione, rendendo possibile il riutilizzo dello stesso processo di costruzione per oggetti differenti (differenti rappresentazioni). Descrizione Il Builder pattern rende possibile ad un client object di costruire oggetti complessi specificando solo il suo tipo e contenuto. Il client è disaccoppiato dai dettagli della creazione dell'oggetto, cioè dal "come" questo oggetto viene creato. Ciò semplifica la creazione di oggetti complessi definendo una classe che costruisce istanze di un'altra classe. Il builder pattern produce un prodotto principale, possono esserci più parti che compongono il prodotto. ![]() L'oggetto Director sa le operazioni da compiere per costruire il prodotto. L'oggetto Builder sa costruire le singoli parti, ma non conosce la sequenza e l'ordine delle operazioni di assemblaggio. Quando la costruzione dell'oggetto è terminata, si chiede al Builder di restituire l'oggetto assemblato. La differenza tra il Builder pattern e gli altri Creational Patterns è che con il Builder è possibile creare un oggetto complesso un passo per volta, mentre gli altri patterns costruiscono l'oggetto in un singolo passo. Collaboration ![]() (dopo questo disegno, mi comincia a venire l'allergia a PoseidonUML... ;-) ) Il director chiama in sequenza i metodi di costruzione sul builder, la cui interfaccia è definita. L'oggetto creato non implementa un'interfaccia predefinita, infatti è il client che invoca getResult sul concrete Builder. Il programmatore può definire diverse implementazioni del builder per creare oggetti differenti. La superclasse di builder può implementare metodi vuoti, di cui le sottoclassi implementano solo quelle a cui sono interessate, lasciando vuoti gli altri metodi. Benefici
Esempio:
Builder is mentioned on: CreationalPatterns |
VQWiki includes notification systems; however, you have not yet become a member.
|
|
|