1. Introduction au modèle d'usine simple
Mode d'usine simple, également connu sous le nom de "mode de méthode d'usine statique". Il appartient au "mode de création" (le modèle de création d'un objet) et est une implémentation spéciale du modèle "Méthode d'usine".
Habituellement, nous utilisons le modèle d'usine simple pour créer des classes. Par exemple, l'obtention d'objets de pool de threads est réalisé via un mode d'usine simple. Son diagramme de structure est le suivant:
Factory: L'usine est le cœur du modèle d'usine simple et fournit des interfaces externes. Lorsqu'un client ou un autre programme souhaite obtenir des objets de produit, il est obtenu via l'interface d'usine.
Produits abstraits: les produits abstraits sont abstraits par (de nombreux) produits différents. Le produit peut être une interface ou une classe abstraite.
Produit spécifique: l'objet produit renvoyé dans l'usine est en fait créé via ConcreteProduct.
2. Modèle de code de motif d'usine simple
Classe publique Factory {public static Product NewInstance () {return new ConcreteProduct (); }} Product abstrait public {} classe publique ConcreteProduct étend le produit {public ConcreteProduct () {}} Diagramme de classe du modèle
3. Application pratique du modèle d'usine simple
Lorsque nous écrivons un servlet pour gérer les demandes des clients, nous gérons souvent plusieurs logiques commerciales dans un servlet, par exemple:
protected void doPost (requette httpservletRequest, réponse httpservletResponse) {String Flag = request.getParameter ("Flag"); if (Flag.equals ("Service1")) {Service1 (); } else if (flag.equals ("service2")) {service2 (); } ...}Ce qui précède est la méthode générale de notre servlet à gérer la logique multi-entreprises et à écrire un tas d'instructions IF Else. Une meilleure façon consiste à séparer la distribution demandée du servlet, afin que le servlet ne gère que la logique commerciale. Nous considérons divers servlets demandés comme des classes de produits. javax.servlet.httpservlet est la classe parent du produit, et javax.servlet.servlet est l'interface du produit. De cette façon, nous définissons un servletfactory, analysons la demande d'URL dans le filtre et le remettons au servletfactory pour le traitement. Il s'agit d'une application d'usine simple typique.
@WebFilter ("/ TransRequest") La classe publique TransRequest implémente Filter {private String ServLetName; @Override public void dofilter (ServLetRequest Request, ServletResponse Response, filterChain Chain) lève IOException, servlexception {httpservletRequest myRequest = (httpservletRequest) request; // Obtenez le nom du servlet demandé, nous convenons ici que la demande est sous la forme de / servLetName String Names [] = myRequest.getRequestruri (). Trim (). Split ("/"); servletName = noms [2]; if (servletName! = null) {// Les éléments suivants sont deux exemples les plus typiques d'usines simples servlet = servletfactory.createservlet (servletName); servlet.service (demande, réponse); } else chain.dofilter (demande, réponse); } Chaque fois que nous demandons une demande, nous utilisons l'usine pour produire un servlet, ce qui peut éviter de configurer une grande quantité d'informations de chemin de servlet dans le XML. Et cela rendra également la logique plus claire, et les servlets ne gèrent que les affaires au niveau de l'entreprise.
Les catégories d'usine sont les suivantes:
classe publique ServletFactory {public static Servlet CreateServlet (String ServletName) lève ServletException {if (servletName.equals ("servletName1")) {return new Service1 (); } else if (servletName.equals ("servletName2")) {return new Service2 (); } else {lance un nouveau servletException ("pas de cel servlet"); }}}Bien que la classe d'usine ci-dessus ne mette pas de côté le lourdeur si ailleurs, l'idée d'utiliser l'usine simple résout encore certains problèmes. Une usine simple est un modèle de conception très simple qui ne peut pas être considéré comme un modèle de conception, et les problèmes résolus sont également limités. La distribution de demande ci-dessus a été mise en œuvre. Par exemple, Struts2, bien sûr, le cadre n'est pas une usine simple.
4. Résumé
Le modèle d'usine simple, pour résumer, est une classe d'usine, une interface de produit (en fait, il peut également être une classe abstraite, ou même une classe parentale ordinaire) et un groupe de produits spécifiques qui implémentent des interfaces de produit. Cette classe d'usine crée une classe d'implémentation spécifique basée sur les paramètres passés et le transforme vers le haut en une interface en conséquence.