1. Introdução ao modelo simples de fábrica
Modo simples de fábrica, também conhecido como "modo de método de fábrica estática". Ele pertence ao "modo de criação" (o padrão para criar um objeto) e é uma implementação especial do padrão "Método da Fábrica".
Geralmente, usamos o simples padrão de fábrica para criar classes. Por exemplo, a obtenção de objetos do pool de threads é alcançada através do modo simples de fábrica. Seu diagrama de estrutura é o seguinte:
Fábrica: A fábrica é o núcleo do modelo simples de fábrica e fornece interfaces externas. Quando um cliente ou outro programa deseja obter objetos de produto, eles são obtidos através da interface da fábrica.
Produtos abstratos: Os produtos abstratos são abstratos por (muitos) produtos diferentes. O produto pode ser uma interface ou uma classe abstrata.
Produto específico: o objeto de produto retornado na fábrica é realmente criado através do concreto.
2. Modelo de código de padrão de fábrica simples
public class Factory {public static Product NewInstance () {return new concreteProduct (); }} Produto abstrato público {} classe pública ConcreteProduct estende o produto {public concreteproduct () {}} Diagrama de classe do modelo
3. Aplicação prática de modelo simples de fábrica
Quando escrevemos um servlet para lidar com solicitações de clientes, geralmente lidamos com várias lógicas de negócios em um servlet, por exemplo:
DoPost nocivo protegido (solicitação httpServletRequest, httpServletResponse resposta) {string flag = request.getParameter ("sinalizador"); if (flag.equals ("Service1")) {Service1 (); } else if (flag.equals ("service2")) {service2 (); } ...}O exposto acima é o método geral do nosso servlet para lidar com a lógica de múltiplas empresas e escrever um monte de declarações IF. Uma maneira melhor é separar a distribuição solicitada do servlet, para que o servlet lida apenas com a lógica de negócios. Consideramos vários servlets solicitados como classes de produtos. javax.servlet.httpServlet é a classe pai do produto, e javax.servlet.servlet é a interface do produto. Dessa forma, definimos uma fábrica de servlet, analisamos a solicitação de URL no filtro e a entregamos ao servletFactory para processamento. Este é um aplicativo típico de fábrica simples.
@Webfilter ("/transrequest") Classe pública TransRequest implementos filtro {private string servletName; @Override public void Dofilter (Solicitação de servletRequest, resposta servletResponse, cadeia de filtragem) lança IoException, servletexception {httpServletRequest myRequest = (httpServletRequest) solicitação; // Obtenha o nome do servlet solicitado, aqui concordamos que a solicitação está na forma de/servletName string nomes [] = myRequest.getRequesturi (). TRIM (). Split ("/"); servletname = nomes [2]; if (servletname! = null) {// o seguinte são dois exemplos mais típicos de fábricas simples servlet servlet = servletFactory.createServlet (servletname); servlet.service (solicitação, resposta); } else Chain.Dofilter (solicitação, resposta); } Cada vez que solicitamos uma solicitação, usamos a fábrica para produzir um servlet, que pode evitar a configuração de uma grande quantidade de informações do caminho do servlet no XML. E isso também tornará a lógica mais clara, e os servlets lidam apenas com os negócios no nível da empresa.
As categorias de fábrica são as seguintes:
classe pública servletFactory {public static servlet CreateServlet (string servletname) lança servletexception {if (servletName.equals ("servletname1")) {return new Service1 (); } else if (servletName.equals ("servletName2")) {return new Service2 (); } else {lança a nova servletexception ("nenhum servlet"); }}}Embora a classe de fábrica acima não deixasse de lado o pesado, se mais, a idéia de usar a fábrica simples ainda resolve alguns problemas. Uma fábrica simples é um padrão de design muito simples que não pode ser considerado um padrão de design, e os problemas resolvidos também são limitados. A distribuição de solicitação acima foi implementada. Por exemplo, o Struts2, é claro, a estrutura não é uma fábrica simples.
4. Resumo
O modelo simples de fábrica, para resumir, é uma classe de fábrica, uma interface de produto (na verdade, também pode ser uma classe abstrata ou mesmo uma classe pai comum) e um grupo de produtos específicos que implementam interfaces de produto. Esta classe de fábrica cria uma classe de implementação específica com base nos parâmetros passados e a transforma para cima em uma interface como resultado.