12 de mai. de 2010

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! ;)



.

Um comentário: