Método estático de fábrica em vez de construtor Por
falar nisso, muito pode ser dito. Depois de trabalhar no projeto por mais de um ano, senti-o gradualmente.
Falando em construtores,
todos sabem que os construtores nos permitem obter uma instância de nós mesmos ou de outros, onde e onde. Não temos escrúpulos em usar novos, mas nunca consideramos como os outros se sentem. De fato, um novo objeto novo é abrir um espaço de memória para esse objeto. Se é novo em todos os lugares, em todos os lugares, em todas as montanhas ...
colorido novo, a essência é a mesma. Uma
frase: Embora o construtor seja todo-poderoso, mas deve ser valorizado.
Vamos falar sobre o método
estático de fábrica, como o nome sugere, é apenas um método estático que retorna uma instância da classe. Existe uma analogia inadequada aqui: acho que os benefícios dos métodos estáticos de fábrica, como torneiras manuais, sempre têm água (objetos). Basta usar esse método.
Dê uma olhada no seguinte exemplo simples:
public Boolean static valueOfBoolean (Boolean b)
{
return b? Boolean.TRUE: Boolean.FALSE;
}
#booleano tipo básico é convertido em referência a objeto booleano.
#staticDe acordo
com o exemplo acima, comparado ao construtor, vamos discutir comigo:
1 Ele começa a ter nomes
2 Você não precisa chamá-los sempre, criar um novo objeto
3 Retorne a qualquer
API de acesso ao serviço de objeto do subtipo do tipo de retorno original- --- Fábrica dinâmica flexível
O seguinte implementa uma interface de provedor de serviços e um provedor padrão:
pacote src.day01;
importar java.util.concurrent.ConcurrentHashMap;
/ **
* Criado com o IntelliJ IDEA.
* Usuário: Li
* Data: 14-5-12
* Hora: 10:52
* Para alterar este modelo, use Arquivo | Configurações | Modelos de arquivo.
* /
public interface Service {
}
provedor de interface pública {
Service newService ();
}
classe pública Services {
private Services () {}
private static final Map <String, Provider> provider = new ConcurrentHashMap <String, Provider> ();
public static final String DEFAULT_PROVIDER_NAME = "<def>";
public static void registerDeafaultProvider (Provedor p)
{
registerProvider (DEFAULT_PROVIDER_NAME, p);
}
public static void registerProvider (String name, Provider p)
{
provider.put (name, p);
}
public static Service new Instance ()
{
return newInstance (DEFAULT_PROVIDER_NAME);
}
public static Service newInstance ( Nome da string)
{
Provedor p = provider.get (name);
if (p == null)
lança nova IllegalArgumentException (
"no ..."
);
retorna p.newService ();
}
}
#providers
# newInstance Esse método é estático O método factory
deste exemplo nos diz que, quando
eles criam uma instância de tipo parametrizado, o código é mais conciso.
Resumo
Static Factory Method
1 Começou a ter um nome
2 Você não precisa chamá-los toda vez para criar um novo objeto.3
Retornar objetos de qualquer subtipo do tipo de retorno original.4
Quando eles criam uma instância de tipo parametrizado, o código é mais conciso.
(A vida é inseparável de encontrar objetos, procurar maneiras, o que você diz?)
Obrigado e compartilhamento de recursos
andaram passo a passo na estrada, espero que todos se juntem a mim.
Melhore o java, considere o método estático de fábrica em vez do construtor
Acho que você gosta
Origin www.cnblogs.com/zhenhua1618/p/12729931.html
Recomendado
Clasificación