Descripción del patrón de fábrica abstracta
1. Problemas con el modelo de método de fábrica: en el modelo de método de fábrica, la creación de clases requiere pasar por la clase de fábrica. Si desea extender el programa, debe modificar la clase de fábrica. Esto viola el principio de cierre, se abre por extensiones y cierre por modificaciones; Hay ciertos problemas con el diseño.
2. Cómo resolverlo: debe usar el modelo de fábrica abstracta, lo que significa crear clases de fábrica para las clases funcionales por separado, para que no tenga que modificar el código anterior y expandir las funciones.
3. El modelo de fábrica en realidad está creando llamadas al método de fábrica unificado para implementar la clase de implementación que implementa la misma interfaz, pero JavaScript no tiene el número de interfaz, por lo que esta capa de implementación se elimina, pero los miembros y los métodos de la clase de función de bit deben ser lo mismo;
Resumen Ejemplo del código fuente de fábrica
1. Clase de envío de correo electrónico :
La copia del código es la siguiente:
function mailsender () {
this.to = '';
this.title = '';
this.content = '';
}
Mailsender.prototype.send = function () {
// Enviar cuerpo
}
2. Clase de envío de SMS:
La copia del código es la siguiente:
función smssender () {
this.to = '';
this.title = '';
this.content = '';
}
Smssender.prototype.send = function () {
// Enviar cuerpo
}
3. Esta es originalmente una clase de interfaz de fábrica, pero se elimina aquí; crear directamente varias fábricas de clases funcionales ;
1>. Categoría de fábrica de correo:
La copia del código es la siguiente:
function mailFactory () {
}
MailFactory.prototype.produce = function () {
devolver nuevo Mailsender ();
}
2>. Categoría de fábrica de SMS:
La copia del código es la siguiente:
función smsFactory () {
}
Smsfactory.prototype.produce = function () {
devolver nuevo smssender ();
}
4. Cómo usar:
La copia del código es la siguiente:
var factory = new MailFactory ();
Var remitente = factory.produce ();
remiter.to = 'toname#mail.com';
Sender.title = 'Patrón de fábrica abstracta';
remiter.content = 'Enviar contenido';
remitente.send ();
Otras instrucciones
El modo de fábrica utilizado en idiomas orientados a objetos, como Java y .NET C#, usan interfaces. Las interfaces son métodos disponibles para exponer a varios usuarios externos, explicando qué métodos aplicar esta función y cómo los usuarios deben usar esta interfaz. Los objetos se expresan en forma de clases, que representan alguna abstracción en el mundo real. Quizás la escena tendrá muchas aplicaciones similares, como el envío de correo electrónico, el envío de SMS y varios métodos promocionales en el centro comercial, así como varias aves y bestias en el mundo de los animales.
Si no proporcionamos a los usuarios el uso del usuario en forma de interfaz, inevitablemente proporcionaremos a los usuarios los objetos de clase funcional reales, y los usuarios pueden modificar y extender los objetos de clase a voluntad, lo cual no está permitido.
El modo de método de fábrica y el modo de fábrica abstracto pueden resolver bien tales problemas. Los usuarios solo pueden usar la interfaz para llamar a la clase de fábrica para realizar operaciones especificadas; El modo de fábrica abstracto utiliza aún más la función de extensión, y la clase funcional y la clase de fábrica implementan la extensión de nivel de clase respectiva en la interfaz correspondiente, y no implicará modificar otras clases o métodos;