Design Patterns na Prática – Parte I: Builder

Olá pessoal! Hoje darei início a uma série de “rapidinhas” sobre a aplicação de design patterns em exemplos práticos. Darei um problema e, em seguida, a modelagem de uma solução adequada. Espero que aproveitem!
O primeiro padrão a ser tratado trata-se de um comumente utilizado em projetos de software quando se tem a intenção de criar objetos complexos dinâmicamente e de maneira flexível sem precisarmos fazer isto de explícitamente.
Basicamente, o objetivo deste padrão é separar a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes objetos. Estou falando nada mais, nada menos, do incrível padrão Builder!

Vamos então ao que interessa:

Uma aplicação envia um XML a outra contendo os seguintes campos abaixo:

<header>…</header> 

<body>
            <struct1> 
                  <campo1>…</campo1>…<campo2>…</campon>….
            </struct1>
            <struct2> 
                  <campo1>…</campo1>…<campo2>…</campon>….
            </struct2>
            …. 
            <structn> 
                  <campo1>…</campo1>…<campo2>…</campon>….
            </structn>

</body>
<trailer>…</trailer>

O problema é criar uma interface para enviar alguns parâmetros e buscá-los de um banco de dados (ex: um registro de uma pessoa como nome, endereço, etc…) e a mesma traga o XML apropriado montado. Utilizamos então para isto um design pattern do tipo criacional para se construir as classes necessárias para gerar esse XML: o Builder!

Nossa classe com o papel de diretor (ManageXMLConstruct) coordenará a delegação da construção às fábricas específicas de cada classe que representa uma tag do XML de acordo com a necessidade da construção. É o Builder entrando em ação!

É isso pessoal, fico por aqui.
Para qualquer dúvida, por favor, não deixe de postar o seu comentário.
Um abraço e até o próximo post da série! 😉
.
Design Patterns na Prática – Parte I: Builder

One thought on “Design Patterns na Prática – Parte I: Builder

Deixe uma resposta

O seu endereço de e-mail não será publicado.