GeeksforGeeks

Factory Method is a Creational Design Pattern that allows an interface or a class to create an object, but let subclasses decides which class or object to instantiate. Usando o método de fábrica, temos as melhores maneiras de criar um objeto. Aqui, os objetos são criados sem expor a lógica ao cliente e para criar o novo tipo do objeto, o cliente usa a mesma interface comum.

problemas que enfrentamos sem Método de fábrica:

Imagine que está a ter a sua própria startup, que oferece uma partilha livre nas diferentes partes do país. A versão inicial do app apenas fornece o ridesharing de duas rodas, mas com o passar do tempo, o seu app torna-se popular e agora você quer adicionar três e Quatro Rodas ridesharing também.É uma grande notícia! mas e os desenvolvedores de software de sua startup? Eles têm que alterar todo o código porque agora a maior parte do código é acoplado com a classe de Duas Rodas e os desenvolvedores têm que fazer alterações em toda a base de código.
depois de todas essas mudanças, ou os desenvolvedores terminam com o código confuso ou com a carta de demissão.

fábrica-padrão-python,

Localizador app

representação Gráfica de Problemas sem o uso de Método de Fábrica

Vamos entender o conceito com um exemplo a mais que está relacionado com as localizações e traduções de línguas diferentes.Suponha que criamos um aplicativo cujo objetivo principal é traduzir uma língua para outra e atualmente o nosso aplicativo trabalha apenas com 10 idiomas. Agora o nosso aplicativo tornou-se amplamente popular entre as pessoas, mas a demanda cresceu de repente para incluir mais 5 línguas.É uma grande notícia! apenas para o proprietário não para os desenvolvedores. Eles têm que alterar todo o código porque agora a maior parte do código é acoplado apenas com as línguas existentes e é por isso que os desenvolvedores têm que fazer alterações em toda a base de código, o que é realmente uma tarefa difícil de fazer.

vamos olhar para o código para o problema que podemos enfrentar sem usar o método de fábrica.

Nota: O código seguinte é escrito sem usar o método de fábrica.

class FrenchLocalizer:
def __init__(self):
self.translations = {"car": "voiture", "bike": "bicyclette",
"cycle":"cyclette"}
def localize(self, message):
return self.translations.get(msg, msg)
class SpanishLocalizer:
def __init__(self):
self.translations = {"car": "coche", "bike": "bicicleta",
"cycle":"ciclo"}
def localize(self, msg):
return self.translations.get(msg, msg)
class EnglishLocalizer:
def localize(self, msg):
return msg
if __name__ == "__main__":
f = FrenchLocalizer()
e = EnglishLocalizer()
s = SpanishLocalizer()
message =
for msg in message:
print(f.localize(msg))
print(e.localize(msg))
print(s.localize(msg))



solução Por Método de fábrica:

sua solução é substituir as chamadas de construção de objeto direto para a frente com chamadas para o método de fábrica especial. Na verdade, não haverá diferença na criação de objetos, mas eles estão sendo chamados dentro do método de fábrica.

por exemplo: as nossas classes Two_Wheeler, Three_Wheeler e Four_wheeler devem implementar a interface de partilha de pacotes que irá declarar um método chamado ride. Cada classe irá implementar este método de forma única.

python-factory-patter-solution

solution_factory_diagram

now let us understand the factory method with the help of an example:

class FrenchLocalizer:
def __init__(self):
self.translations = {"car": "voiture", "bike": "bicyclette",
"cycle":"cyclette"}
def localize(self, message):
return self.translations.get(msg, msg)
class SpanishLocalizer:
def __init__(self):
self.translations = {"car": "coche", "bike": "bicicleta",
"cycle":"ciclo"}
def localize(self, msg):
return self.translations.get(msg, msg)
class EnglishLocalizer:
def localize(self, msg):
return msg
def Factory(language ="English"):
localizers = {
"French": FrenchLocalizer,
"English": EnglishLocalizer,
"Spanish": SpanishLocalizer,
}
return localizers()
if __name__ == "__main__":
f = Factory("French")
e = Factory("English")
s = Factory("Spanish")
message =
for msg in message:
print(f.localize(msg))
print(e.localize(msg))
print(s.localize(msg))



Diagrama de Classe para o Método de Fábrica:

vejamos o diagrama de classes considerando o exemplo de partilha de viagens.

padrão-Fábrica-classe

Factory_pattern_class_diagrma

vantagens do método-Fábrica:

  1. podemos facilmente adicionar os novos tipos de produtos sem perturbar o código de cliente existente.Geralmente, o acoplamento apertado é evitado entre os produtos e as classes e objetos criadores.

desvantagens da utilização do método de fábrica:

  1. para criar um objeto de produto concreto particluar, o cliente pode ter que subclassificar a classe criadora.
  2. você acaba com um grande número de pequenos arquivos I. E., A confusão dos arquivos.
  3. aplicabilidade :

    1. em um sistema gráfico, dependendo da entrada do usuário, ele pode desenhar diferentes formas como Retângulo, Quadrado, círculo, etc. Mas para a facilidade de ambos os desenvolvedores, bem como o cliente, podemos usar o método de fábrica para criar a instância, dependendo da entrada do Usuário. Então não temos que mudar o código do cliente para adicionar uma nova forma.
    2. num local de reserva de Hotel, podemos reservar um espaço para 1 Quarto, 2 quartos, 3 quartos, etc. Aqui o usuário pode inserir o número de quartos que deseja reservar. Usando o método de fábrica, podemos criar uma classe de fábrica qualquer sala que nos ajudará a criar a instância, dependendo da entrada do Usuário. Mais uma vez, não temos de alterar o código do cliente para adicionar as novas instalações.

    leia mais: padrão de fábrica em C++

marcas do artigo :

Deixe uma resposta

O seu endereço de email não será publicado.

Previous post Selegiline Transdermal Patch (Emsam) para Transtorno Depressivo Maior
Next post 6 sinais do Compressor do seu ar condicionado é mau