A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrões GoF – Factory Method

Apresentações semelhantes


Apresentação em tema: "Padrões GoF – Factory Method"— Transcrição da apresentação:

1 Padrões GoF – Factory Method

2 Factory Method Quando uma parte de um SSOO precisa dos serviços de um objeto, essa parte envia mensagem para este último. No entanto para que um objeto receba mensagens, ele deve existir. Não faz sentido falar em “envio de mensagens” para um objeto que não existe. Para um objeto existir, ele deve ser instanciado a partir de uma classe. Instanciar uma classe significa criar um objeto dessa classe. Fisicamente falando, isso significa (1) alocar espaço em memória para armazenar o objeto e (2) iniciar o seu estado (ou seja, os valores de seus atributos). Após a instanciação, o objeto pode prover serviços para outros objetos. (ou seja, para sua região de código cliente)

3 Factory Method Entretanto, a operação de instanciação de um objeto pode ser bastante complexa. Além disso, pode ser que não seja adequado fazer com que uma região de código que necessite de um serviço tenha uma referência direta para a classe (objeto) que o fornece. Uma razão para isso pode ser o fato de que a forma de implementar tal serviço ser instável, no sentido de precisar ser alterada no futuro. Se a região de código instanciar diretamente a classe que lhe fornece determinado serviço, essa região fica definitivamente acoplada a essa classe fornecedora e a sua forma específica de prover o serviço requerido. Uma forma de resolver o problema descrito acima é através de uma fábrica de objetos...

4 Factory Method Uma fábrica de objetos corresponde a uma classe cuja responsabilidade é criar outros objetos, quando requisitada. Essa fábrica retorna o objeto criado na forma de uma referência para uma superclasse abstrata ou para uma interface. Dessa maneira, a região cliente, que previamente criava o objeto para lhe prover o serviço, agora fica dependente desse serviço através de um acoplamento abstrato. Com efeito, a classe que realmente fornece o serviço requerido pode ser substituída sem que a região de código cliente precise de modificação.

5 Factory Method Essa é a solução correspondente ao padrão Factory Method, cujo objetivo é definir uma interface para instanciar objetos. Note que a fábrica de objetos precisa fazer referência às classes concretas cujos objetos fornecem o serviço requerido, o que é um exemplo de acoplamento concreto. Entretanto, essa referência fica localizada em uma região de código particular (na fábrica de objetos) e é conseqüentemente aceitável. Note também que quaisquer mudanças nas classes que fornecem o serviço em questão ficam localizadas à fábrica de objetos e não afetam os clientes.

6 Factory Method Outro aspecto importante sobre o padrão Factory Method é que sua utilização adiciona complexidade ao projeto. Na verdade, essa é uma tônica na maioria dos padrões de projeto: eles adicionam flexibilidade às custas de adicionarem complexidade à solução. A decisão por utilizar esse padrão deve levar em consideração o fato de a classe que fornece o serviço ser realmente suscetível a mudanças futuras. Em caso contrário, a referência (instanciação) direta da classe que fornece o serviço (em vez de usar o Factory Method) é uma alternativa mais viável.

7 Factory Method - Estrutura


Carregar ppt "Padrões GoF – Factory Method"

Apresentações semelhantes


Anúncios Google