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!
Uma aplicação envia um XML a outra contendo os seguintes campos abaixo:
<header>...</header>
<body>
<struct1>
<struct1>
<campo1>...</campo1>...<campo2>...</campon>….
</struct1>
<struct2>
<struct2>
<campo1>...</campo1>...<campo2>...</campon>….
</struct2>
….
<structn>
….
<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! ;)
.
Obrigado!!!
ResponderExcluir