1. Introducción al modelo de fábrica simple
Modo de fábrica simple, también conocido como "Modo de método de fábrica estática". Pertenece al "Modo Crear" (el patrón para crear un objeto) y es una implementación especial del patrón "Método de fábrica".
Por lo general, usamos el patrón de fábrica simple para crear clases. Por ejemplo, la obtención de objetos de grupo de subprocesos se logra a través del modo de fábrica simple. Su diagrama de estructura es el siguiente:
Fábrica: la fábrica es el núcleo del modelo simple de fábrica y proporciona interfaces externas. Cuando un cliente u otro programa desea obtener objetos de producto, se obtienen a través de la interfaz de fábrica.
Productos abstractos: los productos abstractos se abstraen por (muchos) productos diferentes. El producto puede ser una interfaz o una clase abstracta.
Producto específico: el objeto de producto devuelto en la fábrica en realidad se crea a través de concreteproducto.
2. Modelo de código de patrón de fábrica simple
Public Class Factory {Public Static Product NewInStance () {return new Concreteproduct (); }} Public Abstract Product {} public class ConcretEproduct extiende el producto {public Concreteproduct () {}} Diagrama de clase del modelo
3. Aplicación práctica del modelo simple de fábrica
Cuando escribimos un servlet para manejar las solicitudes de los clientes, a menudo manejamos múltiples lógicas comerciales en un servlet, por ejemplo:
Solicitud de dopost voides protegido (httpservletRequest, respuesta httpservletResponse) {string flag = request.getParameter ("flag"); if (flag.equals ("servicio1")) {servicio1 (); } else if (flag.equals ("servicio2")) {servicio2 (); } ...}Lo anterior es el método general de nuestro servlet para manejar la lógica de múltiples empresas, y escribir un montón de declaraciones IF más. Una mejor manera es separar la distribución solicitada del servlet, para que el servlet solo maneje la lógica de negocios. Consideramos varios servlets solicitados como clases de productos. javax.servlet.httpservlet es la clase principal del producto, y javax.servlet.servlet es la interfaz del producto. De esta manera, definimos una Factory Servlet, analizamos la solicitud de URL en el filtro y la entregamos a ServletFactory para su procesamiento. Esta es una aplicación de fábrica simple típica.
@WebFilter ("/TransRequest") Public Class TransRequest Implements Filter {private String ServletName; @Override public void dofilter (solicitud de servletRequest, respuesta de servicio de servicio, cadena de filtro de filtro) lanza ioexception, servletException {httpservletRequest myRequest = (httpservletRequest) solicitud; // Obtenga el nombre de servlet solicitado, aquí estamos de acuerdo en que la solicitud está en forma de nombres de cadena/servletname [] = myRequest.getRequesturi (). Trim (). Split ("/"); servletName = nombres [2]; if (servletname! = null) {// Los siguientes son dos ejemplos más típicos de fábricas simples servlet = servletFactory.createServlet (servletName); servlet.service (solicitud, respuesta); } else chain.dofilter (solicitud, respuesta); } Cada vez que solicitamos una solicitud, utilizamos la fábrica para producir un servlet, que puede evitar configurar una gran cantidad de información de ruta de servlet en el XML. Y esto también aclarará la lógica, y los servlets solo manejan los negocios a nivel comercial.
Las categorías de fábrica son las siguientes:
public class ServletFactory {public static Servlet CreateServlet (String ServletName) lanza ServletException {if (ServletName.equals ("ServletName1")) {return new Service1 (); } else if (servletname.equals ("servletname2")) {return new Service2 (); } else {lanzar nueva servletException ("No hay tal servlet"); }}}Aunque la clase de fábrica anterior no deja de lado a la engorrosa si más, la idea de usar la fábrica simple todavía resuelve algunos problemas. Una fábrica simple es un patrón de diseño muy simple que no puede considerarse un patrón de diseño, y los problemas resueltos también son limitados. Se ha implementado la distribución de solicitud anterior. Por ejemplo, Struts2, por supuesto, el marco no es una fábrica simple.
4. Resumen
El modelo simple de fábrica, para resumir, es una clase de fábrica, una interfaz de producto (de hecho, también puede ser una clase abstracta, o incluso una clase principal ordinaria) y un grupo de productos específicos que implementan interfaces de productos. Esta clase de fábrica crea una clase de implementación específica basada en los parámetros aprobados y la transforma hacia arriba en una interfaz como resultado.