Descrição do padrão de fábrica abstrato
1. Problemas com o modelo de método de fábrica: no modelo de método de fábrica, a criação de classes requer a passagem da classe de fábrica. Se você deseja estender o programa, deve modificar a classe de fábrica. Isso viola o princípio de fechamento, abre para extensões e fecha para modificações; Existem certos problemas com o design.
2. Como resolvê -lo: você precisa usar o modelo abstrato de fábrica, o que significa criar classes de fábrica para as classes funcionais separadamente, para que você não precise modificar o código anterior e expandir as funções.
3. O modelo de fábrica está realmente criando chamadas para o método unificado de fábrica de implementar a classe de implementação que implementa a mesma interface, mas o JavaScript não possui o número da interface, portanto essa camada de implementação é removida, mas os membros e os métodos da classe de função de bits devem ser a mesma;
Exemplo de código fonte de fábrica abstrato
1. Classe de envio de e -mail :
A cópia do código é a seguinte:
function MailSender () {
this.to = '';
this.title = '';
this.content = '';
}
MailSender.prototype.send = function () {
// Envie o corpo
}
2. Classe de envio de SMS:
A cópia do código é a seguinte:
function smSsender () {
this.to = '';
this.title = '';
this.content = '';
}
SmSsender.prototype.send = function () {
// Envie o corpo
}
3. Esta é originalmente uma classe de interface de fábrica, mas é removida aqui; criar diretamente várias fábricas de classe funcional ;
1>. Categoria de fábrica de correio:
A cópia do código é a seguinte:
function MailFactory () {
}
MailFactory.prototype.produce = function () {
retornar new MailSender ();
}
2>. Categoria de fábrica de SMS:
A cópia do código é a seguinte:
function smsfactory () {
}
Smsfactory.prototype.produce = function () {
devolver novo smSsender ();
}
4. Como usar:
A cópia do código é a seguinte:
var factory = new MailFactory ();
var remeter = factory.produce ();
remeter.to = 'toname#Mail.com';
sender.title = 'Padrão de fábrica abstrato';
sender.content = 'Enviar conteúdo';
sever.send ();
Outras instruções
O modo de fábrica usado em idiomas orientados a objetos, como Java e .NET C#, use interfaces. As interfaces são métodos disponíveis para expor a vários usuários externos, explicando quais métodos aplicar essa função e como os usuários devem usar essa interface. Os objetos são expressos na forma de classes, representando alguma abstração no mundo real. Talvez a cena tenha muitas aplicações semelhantes, como envio de email, envio de SMS e vários métodos promocionais no shopping, além de vários pássaros e animais no mundo animal.
Se não fornecermos aos usuários o uso do usuário na forma de uma interface, inevitavelmente forneceremos aos usuários os objetos de classe funcional reais, e os usuários podem modificar e estender os objetos de classe à vontade, o que não é permitido.
O modo de método de fábrica e o modo de fábrica abstrato podem resolver bem esses problemas. Os usuários podem usar apenas a interface para ligar para a classe de fábrica para executar operações especificadas; O modo de fábrica abstrato usa ainda a função de extensão e a classe funcional e a classe de fábrica implementam a respectiva extensão no nível de classe na interface correspondente e não envolverá modificar outras classes ou métodos;