Moving through this article, all examples are shown in Windows desktop code but can also be used in web solutions also.
public Burger(size, cheese =
True
, pepperoni =
, tomato =
False
, lettuce =
)
Imports
BaseLibrary.BaseClasses
Namespace
Builders
Public
Class
BurgerBuilder
ReadOnly
Property
Size()
As
Integer
Private
mCheese
Boolean
Cheese()
Get
Return
End
Set
(
ByVal
value
mCheese = value
mPepperoni
Pepperoni()
mPepperoni = value
mLettuce
Lettuce()
mLettuce = value
mTomato
Tomato()
mTomato = value
Sub
New
size
Me
.Size = size
Function
AddPepperoni()
Pepperoni =
AddLettuce()
Lettuce =
AddCheese()
Cheese =
AddTomato()
Tomato =
Build()
Burger
Burger(
BaseClasses
(builder
BurgerBuilder)
Size = builder.Size
Cheese = builder.Cheese
Pepperoni = builder.Pepperoni
Lettuce = builder.Lettuce
Tomato = builder.Tomato
Module
Module1
Main()
Dim
burger = (
BurgerBuilder(14)).
AddPepperoni().
AddLettuce().
AddTomato().
Classes
SimpleMailOperations
Demo1()
mail
MailMessage()
mail.From =
MailAddress(
"jane@comcast.net"
mail.
To
.Add(
"bill@comcast.net"
mail.Subject =
"This is an email"
plainMessage
AlternateView =
AlternateView.CreateAlternateViewFromString(
"Hello, plain text"
,
Nothing
"text/plain"
htmlMessage
"This is an automated email, please do not respond<br><br>An exception "
&
"ocurred in <br><span style="
"font-weight: bold; padding-left: 20px;"
"padding-right:5px"
">Application name</span>MyApp<br>"
"<span style="
"font-weight: bold; "
" padding-left: 5px;padding-right:5px"
">Application Version</span>"
"1.00<br><span style="
"font-weight: bold; padding-left: "
"70px;padding-right:5px"
">"
"text/html"
mail.AlternateViews.Add(plainMessage)
mail.AlternateViews.Add(htmlMessage)
smtp
SmtpClient(
"smtp.comcast.net"
smtp.Send(mail)
mailer
MailBuilder()
mailer.CreateMail(GmailConfiguration1).
WithRecipient(
"karen@comcast.net"
).
WithCarbonCopy(
"mary@gmail.com"
WithSubject(
"Test"
AsRichContent().
WithHtmlView(
"<p>Hello <strong>Bob</strong></p>"
WithPickupFolder().
WithTimeout(2000).
SendMessage()
CreateMail(pConfiguration
String
MailBuilder
Configuration =
MailConfiguration(pConfiguration)
ConfigurationSection = pConfiguration
Client =
SmtpClient(Configuration.Host, Configuration.Port)
With
{
.Credentials =
NetworkCredential(Configuration.UserName, Configuration.Password),
.EnableSsl =
.Timeout = Configuration.TimeOut
}
Message =
.From =
MailAddress(Configuration.FromAddress),
.IsBodyHtml =
WithRecipient(pSender
Message.
.Add(pSender)
WithCarbonCopy(pSender
Message.CC.Add(pSender)
Form1
Form1_Shown(sender
Object
, e
EventArgs)
Handles
.Shown
initialOrderByFieldName =
"LastName"
customerReader =
CustomersBuilder
bindingSourceCustomers.DataSource = customerReader.
Begin().
OrderBy(
DescendingOrder.
WithoutIdentifiers().
ReadAllCustomersRecords()
DataGridView1.DataSource = bindingSourceCustomers
readCustomersButton_Click(sender
bindingSourceCustomers.DataSource =
customerReader.Begin()
customerReader.OrderBy(columnNamesComboBox.Text)
If
decendingOrderCheckBox.Checked
Then
customerReader.DescendingOrder()
Else
customerReader.AscendingOrder()
bindingSourceCustomers.DataSource = customerReader.ReadAllCustomersRecords()
DataGridView1.ExpandAllColumns
DataGridView1.NormalizeColumnHeaders()
Private Sub readCustomersByCountryButton_Click(sender As Object, e As EventArgs) Handles readCustomersByCountryButton.Click bindingSourceCustomers.DataSource = Nothing Dim customerReader = New CustomersBuilder bindingSourceCustomers.DataSource = customerReader. Begin(). NoOrderBy. WhereCountryIdentifierIs(CType(countriesComboBox.SelectedItem, Country).Identifier). ReadCustomerRecordsByCountry() DataGridView1.DataSource = bindingSourceCustomers DataGridView1.ExpandAllColumns DataGridView1.NormalizeColumnHeaders() End Sub
result = customerReader.
UpdateContactPhone(contact.Id).
SetContactPhoneTypeAs(contact.PhoneType).
WithPhoneNumber(contact.PhoneNumber).
PhoneStatusIsActive(contact.Active).
UpdateContactPhoneDetails()
Not
result
MessageBox.Show($
"Failed to update contact for {companyName}"
UpdatePhone(contact
Contact,
Optional
showCommand
=
updateStatement
"UPDATE dbo.ContactContactDevices "
"SET "
"PhoneTypeIdenitfier = @PhoneTypeIdenitfier, "
"PhoneNumber = @PhoneNumber ,"
"Active = @Active "
"WHERE ContactIdentifier = @ContactIdentifier"
Using cn
SqlConnection
{.ConnectionString = ConnectionString}
Using cmd
SqlCommand
{.Connection = cn, .CommandText = updateStatement}
cmd.Parameters.AddWithValue(
"@PhoneTypeIdenitfier"
, contact.PhoneTypeIdenitfier)
"@PhoneNumber"
, contact.PhoneNumber)
"@Active"
, contact.Active)
"@ContactIdentifier"
, contact.Id)
Console.WriteLine(cmd.ActualCommandText())
Try
cn.Open()
cmd.ExecuteNonQuery()
Catch
ex
Exception
mHasException =
mLastException = ex
Using
IsSuccessFul
ProductBuilderClasses
Product
Name()
Price()
Double
ProductStockReport
HeaderPart()
BodyPart()
FooterPart()
Overrides
ToString()
StringBuilder().
AppendLine(HeaderPart).
AppendLine(BodyPart).
AppendLine(FooterPart).
Interfaces
Interface
IProductStockReportBuilder
BuildHeader()
BuildBody()
BuildFooter()
GetReport()
ProductStockReportBuilder
Implements
productStockReport
products
IEnumerable(Of Product)
(products
IEnumerable(Of Product))
.products = products
productStockReport =
ProductStockReport()
IProductStockReportBuilder _
IProductStockReportBuilder.BuildHeader
productStockReport.
HeaderPart = $
"REPORT FOR PRODUCTS ON DATE: {Date.Now}{Environment.NewLine}"
IProductStockReportBuilder.BuildBody
productStockReport.BodyPart =
.Join(
Environment.NewLine,
products.
Select
(p) $
"Product name: {p.Name,8}, product price: {p.Price}"
))
IProductStockReportBuilder.BuildFooter
productStockReport.FooterPart = vbLf &
"Report provided by the ABC company."
ProductStockReport _
IProductStockReportBuilder.GetReport
.productStockReport
Clear()
ProductBuilderDemo
()
products =
List(Of Product) From
{.Name =
"Monitor"
, .Price = 200.5},
"Mouse"
, .Price = 20.41},
"Keyboard"
, .Price = 30.15}
builder =
ProductStockReportBuilder(products)
director =
ProductStockReportDirector(builder)
director.BuildStockReport()
report = builder.GetReport()
'
' Display to the console
Console.WriteLine(report)
demo
Console.ReadLine()