Software design - Lecture 33. The main topics covered in this chapter include: builder design pattern; motivation for builder design pattern; intent of builder design pattern; builder pattern; class diagram; sequence diagram; solution in builder design pattern;...
1 Software Design Lecture : 33 Builder Design Pattern Motivation for Builder Design Pattern In general, object construction details such as instantiating and initializing the components that make up the object are kept within the object, often as part of its constructor This type of design closely ties the object construction process with the components that make up the object Motivation Continue… This approach is suitable as long as the object under construction is simple and the object construction process is definite and always produces the same representation of the object Motivation This design may not be effective when the object being created is complex and the series of steps constituting the object creation process can be implemented in different ways producing different representations of the object. Different implementations of the construction process are all kept within the object, the object can become bulky (construction bloat) and less modular. Subsequently, adding a new implementation or making changes to an existing implementation requires changes to the existing code Intent of Builder Design Pattern Separate the construction of a complex object from its representation so that the same construction process different representations can create Builder Pattern Using the Builder pattern, the process of constructing such an object can be designed more effectively. The Builder pattern suggests moving the construction logic out of the object class to a separate class referred to as a builder class There can be more than one such builder class each with different implementation for the series of steps to construct the object Builder Pattern Each such builder implementation results in a different representation of the object. This type of separation reduces the object size The object construction process becomes independent of the components that make up the object. This provides more control over the object construction process Class Diagram In terms of implementation, each of the different steps in the construction process can be declared as methods of a common interface to be implemented by different concrete builders as shown in the class diagram in next slide 10 14 Builder Design Pattern Different client objects can make use of the Director object to create the required object and once the object is constructed, the client object can directly request from the builder the fully constructed object 15 Builder Design Pattern A new method getObject can be declared in the common Builder interface to be implemented by different concrete builders 16 Improvements in Previous Design The new design eliminates the need for a client object to deal with the methods constituting the object construction process and encapsulates the details of how the object is constructed from the client 17 Class Diagram of Improved Version 18 19 Interaction Flow i The client object creates instances of an appropriate concrete Builder implementer and the Director. The client may use a factory for creating an appropriate Builder object ii The client associates the Builder object with the Director object iii The client invokes the build method on the Director instance to begin the object creation process. Internally, the Director invokes different Builder methods required to construct the final object iv Once the object creation is completed, the client invokes the getObject method on the concrete Builder instance to get the newly created object 20 Sequence Diagram 21 Applicability Builder patterns is useful in a large system Builder patterns fits when different variations of an object may need to be created and the inheritance into those objects is welldefined 22 Example of Builder Class 23 Consider construction of a home, Home is the final end product (object) that is to be returned as the output of the construction process. It will have many steps, like basement construction, wall construction and so on roof construction. Finally the whole home object is returned. Here using the same process you can build houses with different properties 24 25 Java Code in Eclipse 26 27 Comparison of Creational Patterns 28