Exemplo de Factory Method
Sexta-Feira, 4 dUTC Julho dUTC 2008
Imaginem um sistema que é utilizado por uma empresa de cobrança.
Nele precisaremos estar prontos para trabalhar com diversas carteiras de cobrança, cada uma de um banco ou empresa diferente e com regras totalmente distintas entre elas, algumas promoções malucas e uma série de outros fatores.
Num cenário como esse devemos conseguir desacoplar as regras principais do negócio das regras específicas de cada carteira de cobrança, assim geramos o menor impacto possível quando cada um dos clientes da empresa mandar uma nova regra de cobrança (e podem acreditar isso é MUITO frequente).
Para simpificar o exemplo imagine que apenas a regra de calculo de juros possa variar de uma carteira para outra. Podemos nesse caso utilizar um modelo parecido com o abaixo.
Nosso sistema deverá trabalhar sempre com as classes CalculadoraCobranca e CalculadoraJuros, no entanto ireos encapsular as regras de cada banco dentro das classes concretas JurosBancoX e JurosBancoY, que serão criadas pelos seus contrutores concretos.
Ainda haerá a necessidade de alguma outra parte do sistema saber qual das classes concretas utilizar e isso certamente será resolvido pelas sua camada de aplicação, mas a regra do seu negócio fica isolada e pode ser testada e modificada muito mais facilmente do que se você utilizasse uma estrutura condicional na classe que calcula os juros.
Até a próxima.
Entry Filed under: Patterns. Tags: Factory, Design Pattern.
5 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed

1.
Claudia Pessanha | Segunda-feira, 7 dUTC Julho dUTC 2008 at 15:19
Olá! Vc está de parabens! Achei bastante didática a sua explicação. Será que vc poderia fazer um post tbm para o abstract factory??? Eu ainda confundo os dois (factory method e abstract factory). Desde já agradeço pela atenção. Bjs.
2.
niltonnakate | Segunda-feira, 7 dUTC Julho dUTC 2008 at 16:56
Olá Claudia,
Pode deixar que um dos próximos será o exemplo da Abstract Factory.
Muito obrigado.
3.
Edu Monesi | Segunda-feira, 7 dUTC Julho dUTC 2008 at 17:06
Nilton,
No desenho, talvez seja interessante colocar um cliente do Factory Method, ou um trecho de código mostrando que tal cliente desconhece as especializações em questão. Assim fica explícita a importância do uso de Factories em geral.
Uma dica pro diagrama: Desloque JurosBancoY e CobrancaBancoY verticalmente para baixo, de forma que a linha de dependência fique reta. Pode parecer frescura, mas simplifica o desenho e facilita o entendimento pela simetria das coisas ! :-)
Parabéns !
4.
tucaz | Segunda-feira, 18 dUTC Agosto dUTC 2008 at 12:02
Opa!
Nesse exemplo você também demonstrou o uso do padrão Strategy que quase sempre vem associado ao uso de Factories.
5.
niltonnakate | Sábado, 30 dUTC Agosto dUTC 2008 at 14:42
Com certeza Tucaz,
pode confirmar isso no exemplo de Abstract FActory.