[Padrão de design] ------ Padrão de método de fábrica

Padrão de método de fábrica

As fábricas de telefones celulares fabricam telefones celulares, as fábricas de sabão fabricam sabonetes e as farmacêuticas fabricam medicamentos.

Suponha que exista uma grande classe de objetos A1, A2, A3, A4 ... todos eles têm uma classe pai comum A
A1 pode ser vista como um telefone celular, A2 pode ser vista como sabão ...

(A1Factory no exemplo abaixo é uma fábrica de telefones celulares, A2Factory é uma fábrica de sabão)

Então, como usar o padrão de método de fábrica para criar esses objetos? Veja um exemplo

1. Defina a interface de uma fábrica e o método de retornar uma entidade

interface Factory{
	// 定义一个方法,返回A
	A create();
}

2. Para cada objeto, defina e crie sua fábrica, e cada fábrica implementa a interface de fábrica da primeira etapa

class A1Factory implement Factory{
	// A1的工厂类,返回A1对象,用A引用返回出来
	public A creat(){
		return new A1();
	}
}
class A2Factory implement Factory{
	// A2的工厂类,返回A2对象,也用A引用返回出来
	public A creat(){
		return new A2();
	}
}
A3、A4类似

3. Ao usar

Vendo o seguinte efeito, você provavelmente pode entender o que significa: O objeto é criado pela classe pai da fábrica e também acessado pela classe pai A. Isso é equivalente a proteger a diferença de subclasses, desde que uma fábrica seja alterada na origem, o A retornado é o objeto da subclasse correspondente ao A gerado na fábrica.

public A getObj(Factory f){
	return f.create();
}

main(){
	// 给手机工厂,出来就是手机对象
	A A1 = getObj(new A1Factory());
	// 给肥皂工厂,出来就是肥皂对象
	A A2 = getObj(new A2Factory());
}

Prós e contras

Obviamente, o padrão do método de fábrica, cada objeto precisa ser criado para ele criar uma classe de fábrica correspondente. Isso é uma vantagem e uma desvantagem.
A vantagem é que, em comparação com a fábrica simples, isso atrasa a instanciação da classe para a fábrica da subclasse.
As falhas são por causa disso, toda vez que existe um novo tipo, é necessário criar uma fábrica correspondente, que parece redundante.

Expandir

Freqüentemente, em cada fábrica de subclasse do padrão de método de fábrica, o padrão simples de fábrica é usado.
Em outras palavras, o método create de A1Factory não necessariamente retorna apenas A1. Pode ser uma subclasse de A1. Para qual, você pode adicionar um parâmetro de tipo ao método create e distingui-lo de acordo com o tipo.

Em resumo, isso significa que, na produção real, em muitos casos, vários padrões de design são usados ​​juntos, não apenas um determinado padrão de design.

Publicado 203 artigos originais · elogiado 186 · 210.000 visualizações

Acho que você gosta

Origin blog.csdn.net/java_zhangshuai/article/details/105170508
Recomendado
Clasificación