Patrones de diseño (4) - modo de fábrica

modo de fábrica incluye principalmente método de fábrica y fábrica de resumen , su principal objetivo es crear una instancia de esta actividad apartarse del cabo de clase, reducir el sistema de acoplamiento, el enfoque específico es crear un objeto de paquete.

Método de fábrica

método de fábrica para crear un objeto patrón define una interfaz, sino que se determina por la subclase para crear instancias de la clase que es a. Dejar que el método de fábrica para crear instancias de la clase diferido a las subclases.

A modo de ejemplo para ilustrar el modo directo. Simulamos una tienda de pizza, que necesita para lograr clase y clase de pizza PizzaStore, necesidades de la clase PizzaStore método para contener orderPizza. La necesidad de ciertos tipos de menú de pizza instancia en el proceso de orderPizza. Si la instancia directa mediante nueva, cuando queremos actualizar el menú, debe hacer cambios en el código orderPizza, está claro que, contrariamente a nuestra "cerrado por modificación" principio. Con este fin, declaramos un método de fábrica , que originalmente era responsable de una instancia de objeto específico de todas las clases, y ahora por PizzaStore hacer algún pequeño cambio en subclases por un grupo responsable de instanciar, a fin de lograr el proceso de creación de paquetes de objetos propósito.

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;
	}
}

Proyecto con Maven para construir, método de prueba está en el directorio de prueba. La imagen muestra el método de clases

Abstract Factory

Resumen patrón de fábrica proporciona una interfaz para crear familias de objetos relacionados o dependientes sin la necesidad de especificar explícitamente una clase específica.

Ejemplo siguiendo un método de fábrica, con el fin de asegurar que si cada pizza franquicias utilizan materias primas de alta calidad, tenemos que construir una fábrica para la producción de materias primas y las materias primas transportadas a diferentes tiendas. Crear una materia prima para las interfaces definidas en fábrica que fábrica de resumen:

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

fábricas de materias primas en diferentes regiones han logrado cambiar la interfaz, y se puede personalizar de acuerdo a las especialidades locales gustativas. Por lo tanto, el material vegetal se desacopla del material de alimentación específica.

diagrama de clases de fábrica de resumen de la siguiente manera:

El modelo de fábrica encarna otro diseño principal modo: principio de la dependencia inversión , que es confiar en abstracto y no se basan en una clase específica . Esto ilustra el principio: No se puede obtener el componente superior depende de los componentes de bajo nivel, y con independencia de componentes de nivel alto o de bajo nivel, los cuales deben depender de lo abstracto.

Comparación del método de fábrica y la fábrica abstracta

  • Se utilizan para crear objetos envasados, mediante la reducción de la dependencia de promover la articulación flexible entre la aplicación y la clase particular.
  • método de fábrica utilizando la herencia: el objeto delegado para crear una subclase de las subclases para poner en práctica el método de fábrica para crear el objeto.
  • composición objeto de fábrica Resumen: un método para crear un objeto es ahora una interfaz de fábrica expuesta por el.
  • método de fábrica permite retrasar la clase para crear instancias de las subclases.
  • Resumen de la fábrica para crear una familia de objetos relacionados, sin la necesidad de depender de su clase específica.
Publicados 295 artículos originales · ganado elogios 37 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/tianshan2010/article/details/104706011
Recomendado
Clasificación