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: , .

5 Comments Add your own

  • 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.

    Responder
  • 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.

    Responder
  • 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 !

    Responder
  • 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.

    Responder
  • 5. niltonnakate  |  Sábado, 30 dUTC Agosto dUTC 2008 at 14:42

    Com certeza Tucaz,

    pode confirmar isso no exemplo de Abstract FActory.

    Responder

Leave a Comment

Required

Required, hidden

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


del.icio.us

Feeds

Categorias

Tags

Design Pattern Factory

Admin