Abstract factory  may also be used  to construct a complex object, then what is the  difference with builder  pattern? In builder  pattern emphasis is on ‘step  by step’. Builder pattern will have  many number of small steps. Those  every steps will have small units of  logic enclosed in it. There will  also be a sequence involved. It will  start from step 1 and will go on  upto step n and the final step is  returning the object. In these steps,  every step will add some value in  construction of the object. That is  you can imagine that the object  grows stage by stage. Builder will  return the object in last step. But  in abstract factory how complex the  built object might be, it will not  have step by step object  construction.
Both are creational pattern but differ:
Both are creational pattern but differ:
| Factory Pattern | Builder Pattern | 
| The factor pattern defers the choice of what concrete type of object to  make until run time. E.g. going to a restaurant to order the special of the day. The waiter is the interface to the factory that takes the abstractor generic message "Get me the special of the day!" and returns the concrete product (i.e "Chilli Paneer" or some other dish.)  |  The builder pattern encapsulates the logic of how to put together a  complex object so that the client just requests a configuration and the builder directs the logic of building it. E.g The main contractor (builder) in building a house knows, given a floor plan, knows how to execute the sequence of operations (i,e. by delegating to subcontractors) needed to build the complex object. If that logic was not encapsulated in a builder, then the buyers would have to organize the subcontracting themselves  | 
| The factory is concerned with what is made. | The builder with how it is  made. So it focuses on the steps of constructing the complex object.  | 
| In case of Factory or Abstract Factory, the product gets returned immediately | Builder returns the product as  the final step.  | 
No comments:
Post a Comment