.NET - Padrão de Projeto Builder


Neste artigo vamos apresentar os conceitos sobre o padrão Builder e um exemplo de implementação usando a sintaxe Fluente.

O Padrão de projeto Builder é definido como um padrão de criação dentre os 23 padrões elencados pela Gang of Four (GOF).

O padrão Builder cria um objeto complexo usando uma abordagem passo a passo. A interface do Builder define as etapas para construir o objeto final. Esse construtor é independente do processo de criação de objetos. Uma classe que é conhecida como Director, controla o processo de criação de objetos.

Assim, o padrão Builder descreve uma maneira de separar um objeto de sua construção. O mesmo método de construção pode criar uma representação diferente do objeto.

Dessa forma ele separa a construção de um objeto complexo de sua representação para que o mesmo processo de construção possa criar diferentes representações. Resumindo:

  1. Separa a lógica da representação;
  2. Reutiliza a lógica para trabalhar com diferentes conjuntos de dados;

Abaixo temos o diagrama de classe UML para a implementação deste padrão :

As classes, interfaces e objetos no diagrama de classes UML acima são os seguintes:

A seguir temos um exemplo de implementação usando a sintaxe Fluente.

Criando o projeto Console

Vamos criar um vou criar um projeto Console usando o template Console App(.NET Framework)  usando o VS 2017 Community com o nome CShp_Builder;

Criando um projeto do tipo Console no VS 2017 Community vamos definir as classes : Email e EmailBuilder

O código da classe Email:

 public class Email
    {
        public string To { get; set; }
        public string From { get; set; }
        public string Subject { get; set; }
        public string Body { get; set; }
    }

 

O código da classe EmailBuilder:

    public class EmailBuilder 
    {
        private readonly Email _email;
        public EmailBuilder()
        {
            _email = new Email();
        }

        public EmailBuilder Body(string content)
        {
            _email.Body = content;
            return this;
        }
        public EmailBuilder From(string address)
        {
            _email.From = address;
            return this;
        }
        public Email Build()
        {
            return _email;
        }
        public EmailBuilder Subject(string title)
        {
            _email.Subject = title;
            return this;
        }
        public EmailBuilder To(string address)
        {
            _email.To = address;
            return this;
        }
    }

No código do método Main:

   using static System.Console;
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Padrão Adapter -  Fluent Interface");
            var emailBuilder = new EmailBuilder();
            var email = emailBuilder.To("macoratti@yahoo.com")
                .From("teste@email.com")
                .Subject("Assunto do Email")
                .Body("Teste de envio de email")
                .Build();
            WriteLine($"{email.From} \n {email.To} \n {email.Subject} \n {email.Body} ");
            ReadLine();
        }
    }

Abaixo temos o resultado obtido:

Pegue o código do projeto aqui :  CShp_Builder.zip

"Não quero, porém, irmãos, que sejais ignorantes acerca dos que já dormem, para que não vos entristeçais, como os demais, que não têm esperança.
Porque, se cremos que Jesus morreu e ressuscitou, assim também aos que em Jesus dormem, Deus os tornará a trazer com ele."

1 Tessalonicenses 4:13,14

 
Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti