1. Modo de fábrica simples
Descrição: É para criar uma classe de fábrica, que implementa a criação da classe de implementação para a mesma interface.
Mas parece que o JavaScript não possui um número de interface; portanto, removemos a camada de interface; Obviamente, as variáveis e métodos de membro de nossa classe de implementação devem ser os mesmos;
Por exemplo: neste momento, você pode dar um exemplo de envio de mensagens de texto e envio de e -mails;
1>. Classe de envio de correio [implementação]
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 [implementação]
A cópia do código é a seguinte:
function smSsender () {
this.to = '';
this.title = '';
this.content = '';
}
SmSsender.prototype.send = function () {
// Envie o corpo
}
3>. Crie uma aula de fábrica:
A cópia do código é a seguinte:
função sendFactory () {
this.sender = null;
}
SendFactory.prototype.produce = function (type) {
var Me = this;
if (type == 'Mail') {
me.sender = new MailSender ();
} else if (type == 'sms') {
me.sender = new SmSsender ();
}
me devolva.
}
4>. Use esta aula de fábrica:
A cópia do código é a seguinte:
var factory = new sendFactory ();
var remeter = factory.produce ('Mail'); //SMS
remeter.to = 'toname#Mail.com';
sender.title = 'Título do teste de correio!';
sender.content = 'Enviar conteúdo';
sever.send ();
2. Modo de método de fábrica múltiplo
NOTA: Vários métodos de modo de fábrica são uma melhoria dos métodos de fábrica comuns, porque a implementação de retorno é baseada nos caracteres passados. Quando a entrada do caractere está incorreta, ela não pode ser processada ou processada em um erro; enquanto vários métodos de modo de fábrica podem evitar esses erros;
Fizemos melhorias na aula de fábrica acima:
A cópia do código é a seguinte:
função sendFactory () {
this.sender = null;
}
SendFactory.prototype.producemail = function () {
var Me = this;
me.sender = new MailSender ();
me devolva.
}
SendFactory.prototype.producesms = function () {
var Me = this;
me.sender = new SmSsender ();
me devolva.
}
Como usar:
A cópia do código é a seguinte:
var factory = new sendFactory ();
var remeter = factory.produCesms (); // ProductEmail
remeter.to = 'toname#xxxxx';
sender.title = 'título do método de envio de sms';
sender.content = 'Enviar conteúdo';
sever.send ();
3. Modo de método de fábrica estática
NOTA: Altere os métodos de modo de método de fábrica acima acima para identificação estática, para que não haja necessidade de instanciar o sendFactory;
Modifique o código da fábrica da seguinte forma:
A cópia do código é a seguinte:
var sendFactory = {
ProductEmail: function () {
retornar new MailSender ();
},
ProducSMS: function () {
devolver novo smSsender ();
}
}
Como usar:
A cópia do código é a seguinte:
var remeter = sendFactory.producemail ();
remeter.to = 'toname#Mail.com';
sender.title = 'Mail Enviar título';
sender.content = 'Enviar conteúdo';
sever.send ();
Descrição do modelo de método de fábrica
Na descrição de programação de pensamento orientada a objetos, quando existem muitos produtos (modelos do mundo real, nomes: nomes de classe, atributos de membros e métodos de operação etc.) que precisam ser inicializados, ou seja, o produto precisa ser criado e [ao implementar a mesma interface], o modo de método de fábrica pode ser usado; O primeiro modo tem a possibilidade de erro de tipo de entrada e o segundo modo, quando é necessário, a instância da fábrica é criada;