Modèles de conception (4) - Mode usine

Mode usine comprend principalement la méthode de l' usine et l' usine abstraite , son objectif principal est de instancier cette activité au départ de la classe out, réduire le système de couplage, l'approche spécifique est de créer un objet de package.

Méthode usine

Procédé usine pour créer un objet motif définit une interface, mais est déterminée par la sous-classe à instancier la classe qui est une. Laissez la méthode d'usine de classe à instancier différée aux sous-classes.

A titre d'exemple pour illustrer le mode direct. Nous avons simulé un magasin de pizza, il a besoin pour atteindre la classe et la classe Pizza Pizzeria, les besoins de la classe pour contenir la méthode Pizzeria de orderPizza. La nécessité pour certains types de menu pizza instancié dans le processus orderPizza. Si la nouvelle directe instancié à l' aide, quand nous voulons mettre à jour le menu, vous devez apporter des modifications au code orderPizza, il est clair que , contrairement à notre « fermée pour la modification » principe. À cette fin , nous déclarons une méthode d'usine , était à l' origine responsable d'une instance d'objet spécifique de toutes les classes, et maintenant par Pizzeria faire quelques petits changements dans les sous - classes par un groupe responsable de l' instanciation, de manière à réaliser le processus de package de création d'objets but.

public abstract class PizzaStore {
 
	abstract Pizza createPizza(String item);
 
	public Pizza orderPizza(String type) {
		Pizza pizza = createPizza(type);
		System.out.println("--- Making a " + pizza.getName() + " ---");
		pizza.prepare();
		pizza.bake();
		pizza.cut();
		pizza.box();
		return pizza;
	}
}

Projet avec Maven pour construire, méthode d'essai est dans le répertoire de test. La photo montre la méthode d'usine de classe

Abstract Factory

modèle de fabrique abstraite fournit une interface pour la création de familles d'objets liés ou dépendants sans qu'il soit nécessaire de spécifier explicitement une classe spécifique.

Exemple suivant une méthode de fabrication, afin d'assurer que si toutes les franchises de pizza utilisent des matières premières de haute qualité, nous avons besoin de construire une usine pour la production de matières premières et des matières premières transportées à divers magasins. Créer une matière première pour les interfaces définies par l'usine qui fabrique abstraite:

public interface PizzaIngredientFactory {
 
	public Dough createDough();
	public Sauce createSauce();
	public Cheese createCheese();
	public Veggies[] createVeggies();
	public Pepperoni createPepperoni();
	public Clams createClam();
 
}

matières premières usines dans différentes régions ont obtenu le changement de l'interface, et peut être personnalisé selon les goûts des spécialités locales. Ainsi, le matériel végétal a été découplée de la charge spécifique.

Résumé diagramme de classes d'usine comme suit:

Le modèle d'usine incarne une autre conception de mode principe: inversion de dépendance principe , qui est de compter sur abstraite et ne comptez pas sur une classe spécifique . Ceci illustre le principe: Vous ne pouvez pas obtenir le composant supérieur dépend des composants de bas niveau, et quels que soient les composants de haut niveau ou de bas niveau, toutes deux devrait dépendre de l'abstrait.

Comparaison de la méthode de l'usine et l'usine abstraite

  • Ils sont utilisés pour créer des objets emballés, en réduisant la dépendance favoriser le couplage lâche entre l'application et la classe particulière.
  • Méthode usine en utilisant l'héritage: l'objet délégué pour créer une sous-classe des sous-classes pour mettre en œuvre la méthode de l'usine pour créer l'objet.
  • Composition abstraite de l'objet usine: est maintenant une interface usine exposée une méthode pour créer un objet par la.
  • méthode d'usine permet de retarder la classe des sous-classes instancier.
  • Résumé usine pour créer une famille d'objets connexes, sans avoir besoin de compter sur leur classe spécifique.
Publié 295 articles originaux · louange gagné 37 · vues 30000 +

Je suppose que tu aimes

Origine blog.csdn.net/tianshan2010/article/details/104706011
conseillé
Classement