Definição básica
O padrão de método de fábrica define uma interface para criar objetos, mas a subclasse determina qual classe instanciar. O padrão do método de fábrica adia a instanciação para subclasses.
Estrutura padrão
Produto: Produto abstrato. Todos os produtos devem implementar essa interface comum, para que as classes que usam esses produtos possam fazer referência a essa interface.
ConcreteProduct: produtos específicos.
Criador: Abstract factory. Ele implementa todos os métodos de manipulação de produtos, mas não implementa métodos de fábrica. Todas as subclasses do Creator devem implementar o método factoryMethod ().
ConcreteCreator: fábrica de concreto. A fábrica real que fabrica o produto. É responsável por criar um ou mais produtos específicos.
Realização do modo:
Produto Resumo Produto
ConcretoProduto
Classe de fábrica abstrata de fábrica
ConcreteFactory
Classe de teste
Resultado de execução
09: 46: 41.447 [main] INFOcom.yanyuan.gof.build.factory.v2.HuaweiPhone-Huawei celular para discar Diao Chan
09: 46: 41.463 [principal] INFOcom.yanyuan.gof.build.factory.v2.IPhone-iPhone telefone Xiaoqiao
Prós e contras
Vantagem
No método de fábrica, o usuário precisa conhecer apenas a fábrica específica do produto desejado e não precisa se relacionar com o processo de criação específico, nem mesmo o nome da classe de produto específica.
Ao adicionar novos produtos ao sistema, precisamos apenas adicionar uma categoria específica de produto e fábrica de implementação, sem nenhuma modificação na fábrica original, que esteja em conformidade com o "princípio de abertura e fechamento"
Desvantagens
Cada vez que você adiciona um produto, você precisa adicionar uma classe e um objeto específicos para realizar a fábrica.O número de classes no sistema aumentará exponencialmente, o que aumenta a complexidade do sistema em certa medida e também aumenta a dependência das classes específicas do sistema.
Sumário
O modelo do método de fábrica está em total conformidade com o "princípio de abertura e fechamento"
O padrão de método de fábrica usa herança para delegar objetos para subclasses e implementar métodos de fábrica através de subclasses para criar objetos
No padrão do método de fábrica, o criador geralmente contém código de produto que depende da abstração, e esses produtos abstratos são criados por subclasses.O criador não precisa saber qual produto específico criar