Description
The intent of the Builder design pattern is to separate the construction of a complex object from its representation
Examples in .NET :
UriBuilder
namespace Builder;
static class UriBuilderDemo
{
public static void UriMod()
{
//start example 1
var uri = new Uri("https://msprogrammer.serviciipeweb.ro/category/friday-links/");
var b = new UriBuilder(uri);
//changing part
b.Scheme = "http";
//now we have http://msprogrammer.serviciipeweb.ro/category/friday-links/
Console.WriteLine(b.Uri);
//changing part
b.Path = "2018/03/05/design-patterns-class/";
//now we have http://msprogrammer.serviciipeweb.ro/2018/03/05/design-patterns-class/
Console.WriteLine(b.Uri);
//end example 1
}
}
SqlConnectionStringBuilder
namespace Builder;
internal class ConnectionStringDemo
{
public static void ConnectionString()
{
//start example 2
var build = new SqlConnectionStringBuilder();
build.DataSource = ".";
build.InitialCatalog = "MyDatabase";
build.ConnectTimeout = 30;
//here is the connection string built
Console.WriteLine(build.ConnectionString);
//end example 2
}
}
Learn More
Wikipedia
Homework
Imagine that you have a logger that logs to a file and to a console. Implement a builder that will allow you to create a logger with different configurations. For example, you can set the log level, the log format, and the log destination.