(NET) NET (2016)

Builder in VB.NET

Separates object construction from its representation

Return


Separate the construction of a complex object from its representation so that the same construction process can create different representations. The construction process can create different object representations and provides a high level of control over the assembly of the objects.







Please download project with this source code from https://github.com/ViacheslavUKR/StandardDisignOopPattern



   1:      ' Builder Design Pattern.
   2:      ' See description in //www.vb-net.com/ProgramTheory/Builder.htm
   3:      Public Class MainApp
   4:          ' Entry point into console application.
   5:          Public Shared Sub Main()
   6:              ' Create director and builders
   7:              Dim director As New Director()
   8:              Dim b1 As Builder = New ConcreteBuilder1()
   9:              Dim b2 As Builder = New ConcreteBuilder2()
  10:              ' Construct two products
  11:              director.Construct(b1)
  12:              Dim p1 As Product = b1.GetResult()
  13:              p1.Show()
  14:              director.Construct(b2)
  15:              Dim p2 As Product = b2.GetResult()
  16:              p2.Show()
  17:              ' Wait for user
  18:              Console.ReadKey()
  19:          End Sub
  20:      End Class
  21:   
  22:      ' The 'Director' class
  23:      Class Director
  24:          ' Builder uses a complex series of steps
  25:          Public Sub Construct(builder As Builder)
  26:              builder.BuildPartA()
  27:              builder.BuildPartB()
  28:          End Sub
  29:      End Class
  30:   
  31:      ' The 'Builder' abstract class
  32:      MustInherit Class Builder
  33:          Public MustOverride Sub BuildPartA()
  34:          Public MustOverride Sub BuildPartB()
  35:          Public MustOverride Function GetResult() As Product
  36:      End Class
  37:   
  38:      ' The 'ConcreteBuilder1' class
  39:      Class ConcreteBuilder1
  40:          Inherits Builder
  41:          Private _product As New Product()
  42:          Public Overrides Sub BuildPartA()
  43:              _product.Add("PartA")
  44:          End Sub
  45:          Public Overrides Sub BuildPartB()
  46:              _product.Add("PartB")
  47:          End Sub
  48:          Public Overrides Function GetResult() As Product
  49:              Return _product
  50:          End Function
  51:      End Class
  52:   
  53:      ' The 'ConcreteBuilder2' class
  54:      Class ConcreteBuilder2
  55:          Inherits Builder
  56:          Private _product As New Product()
  57:          Public Overrides Sub BuildPartA()
  58:              _product.Add("PartX")
  59:          End Sub
  60:          Public Overrides Sub BuildPartB()
  61:              _product.Add("PartY")
  62:          End Sub
  63:          Public Overrides Function GetResult() As Product
  64:              Return _product
  65:          End Function
  66:      End Class
  67:   
  68:      ' The 'Product' class
  69:      Class Product
  70:          Private _parts As New List(Of String)()
  71:          Public Sub Add(part As String)
  72:              _parts.Add(part)
  73:          End Sub
  74:          Public Sub Show()
  75:              Console.WriteLine(vbLf & "Product Parts -------")
  76:              For Each part As String In _parts
  77:                  Console.WriteLine(part)
  78:              Next
  79:          End Sub
  80:      End Class




See also:
Creational Patterns Structural Patterns Behavioral Patterns

Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23
Link to this page: //www.vb-net.com/ProgramTheory/Builder.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <CHAT ME>  <ABOUT ME>  < THANKS ME>