Tải bản đầy đủ (.pdf) (28 trang)

Software design: Lecture 33 - Sheraz Pervaiz

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (515.27 KB, 28 trang )

1

Software Design
Lecture : 33


2

Builder Design Pattern


3

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.


4

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.




5

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.


6

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 



7

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.


8

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.



9

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


11

Sequence Diagram


12

Flow in Existing Logic
This  approach  requires  every  client  object  to  be 
aware of the construction logic.

Whenever  the  construction  logic  undergoes  a 
change,  all  client  objects  need  to  be  modified 
accordingly.


13


Solution in Builder Design Pattern
Instead  of  having  client  objects  invoke  different 
builder  methods  directly,  the  Builder  pattern 
suggests using a dedicated object referred to as a 
Director,  which  is  responsible  for  invoking 
different  builder  methods  required  for  the 
construction of the final object


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 well­defined.


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


×