编程知识 cdmana.com

Builder pattern of Java design pattern

The definition of builder pattern :

   The builder pattern separates the construction of a complex object from its representation , So that the same build process can create different representations , It belongs to the creative design pattern .

For users , Using builder mode, you can get an object simply by specifying the type you need to create , The creation process and details do not need to be understood . According to the definition of builder pattern, it can be simply understood as two meanings .

  1. Separation of construction and presentation : Building represents the creation of objects , Represents the behavior of an object 、 Method , That is to separate the creation and behavior of objects ( Corresponding to java In the code , It's actually using interfaces to specify behavior , Then it is built by the concrete implementation class ).
  2. Create different representations : That is to have the same behavior , However, different representations can be constructed due to different behavior order of construction or other reasons .

Application scenario of builder mode :

  • Same method , Different order of execution , It produces different results .
  • Multiple components or parts , Can be assembled into objects , But the results are different .
  • The product category is very complex , Or different call sequences in the product class produce different results .
  • Initializing an object is particularly complex , There are many parameters , And many parameters have default values .

Builder mode UML Class diagram :

  

 

 

  As can be seen from the picture above , The builder model mainly includes 4 To the character :

  1. product (Product): Product class object to create .
  2. Abstract builder (IBuilder): The constructor's abstract class , Standardize the creation of various components of product objects , Generally, the specific creation process is implemented by subclasses .
  3. builder (ConcreteBuilder): Concrete Builder class , According to the actual business logic , Materialize the creation of various components of an object .
  4. caller (Director): The caller does not design specific product information , Only responsible for ensuring that all parts of the object are created completely or in a certain order . In the class diagram ,client The role of the caller .

The builder mode is StringBuilder Application in :

   Let's take a look at the execution results of the following code :

 

  Adjust the execution results in the next order :

 

  You'll find that you can achieve different results by adjusting the execution order .

 

  see StringBuilder Source code , Will find StringBuilder Inherit AbstractStringBuilder, So in StringBuilder in , The corresponding product is String object , Abstract builders correspond to AbstractStringBuilder, The builder corresponds to StringBuilder, The caller is

Test Test class , Need the main , The common creator is usually using builder Realize the creation of the final product , however StringBuilder Because it's to create String Object's , So it's called toString, because java Any object converted into a string is toString Method , This is made by agreement .

 

  The difference between builder mode and factory mode :

  • The builder pattern pays more attention to the calling order of methods , Factory mode focuses on creating objects .
  • The strength of creating objects is different , Builder mode creates complex objects , It's made up of various complicated parts , The factory pattern creates the same objects .
  • The focus is different , You just need to create the pattern , The builder pattern is not just about creating objects , Also focus on what parts of the object are made of .
  • The builder mode is different according to the order in the construction process , You can create a variety of different objects .

The builder model is a little bit :

  • Good encapsulation , Separation of construction and presentation .
  • Good scalability , Construction classes are independent , Decouple to a certain extent .
  • Easy to control details , The builder can refine the creation process step by step , It doesn't affect other modules .

Disadvantages of the builder model :

  • You need to create one more IBuilder object .
  • If there is a change inside the product , Then the creator should also modify it synchronously , Maintenance costs are high .

版权声明
本文为[A calf carrying a load]所创,转载请带上原文链接,感谢

Scroll to Top