resumen
El patrón de diseño es un arte. Si realmente entiendes este arte, encontrarás que el mundo se volverá más hermoso.
definición
Definir una interfaz para crear un objeto, deje que su subclase decida qué clase instanciar
Use escenarios
En cualquier lugar donde use objetos complejos, puede usar el modo de fábrica
Uml
1. Fábrica abstracta
Resumen de fábrica: todas sabemos que las fábricas generalmente tienen una sola función, es decir, la producción, por ejemplo, Geely Automobile Factory, es decir, Geely Automobile, iPhone Mobile Teléfonos, etc. para que se pueda resumir de una manera simple, es decir, create ();
2. Plantas de fabricación de automóviles específicas
Planta específica de fabricación de automóviles: realiza una fábrica abstracta, con procesos y métodos reales para fabricar automóviles, etc.
3. Coche abstracto
COCHES RESUMEN: Generalmente sabemos que los autos pueden correr, tocar música, navegar y girar son características comunes de los autos.
4. Autos específicos
Auto abstracto: los autos de concreto se dan cuenta del automóvil abstracto y tienen todas sus funciones. Por supuesto, diferentes autos pueden tener diferentes funciones.
La breve introducción anterior es básicamente que las fábricas específicas de automóviles fabrican automóviles correspondientes, como las fábricas de Audi, las fábricas de Volkswagen, los autos Volkswagen, etc.
Demostración de código
Hemos entendido claramente la relación entre ellos anteriormente, por lo que utilizaremos el código para demostrar nuestras ideas y lógica anterior en el código:
(1) Fábrica de autos abstractos
paquete com.zengtao.demo.factory;/*** Resumen Factory*/public Abstract Class CarFactory {public Abstract <t extiende CAR> t CreateCar (clase <T> CLA);}(2) Fábrica de automóviles específicas
paquete com.zengtao.demo.factory;/*** Audi Factory*/public class Audifactory extiende CarFactory {@SupessWarnings ("sin verificar") @Override public <t extiende Car> T CreateCar (clase <T> CLA) {Car Car = Null; intente {car = (car) class.forname (Cla.getName ()). NewInStance (); } catch (Exception e) {E.PrintStackTrace (); } auto de retorno (t); }}(3) Definición del coche abstracto
paquete com.zengtao.demo.factory; public abstract class Car {public abstract void Drive (); abstracto público vacío AutoNagive (); Public Abstract void Playmusic ();}(4) coche específico
(Audi Q3)
El paquete com.zengtao.demo.factory; public class Audiq3Car extiende Audicar {@Override public void Drive () {System.out.println ("Audiq3Car se ha fabricado con éxito"); System.out.println ("Audiq3Car Drive"); } @Override public void SelfNagive () {System.out.println ("Audiq3Car SelfNagive"); } @Override public void PlayMusic () {System.out.println ("Audiq3Car SelfNagive"); } @Override public void PlayMusic () {System.out.println ("Audiq3Car PlayMusic"); System.out.println (""); }}(Audi Q5)
El paquete com.zengtao.demo.factory; public class Audiq5Car extiende Audicar {@Override public void Drive () {System.out.println ("Audiq5Car se ha fabricado con éxito"); System.out.println ("Audiq5Car Drive"); } @Override public void SelfNagive () {System.out.println ("Audiq5Car SelfNagive"); } @Override public void PlayMusic () {System.out.println ("Audiq5Car SelfNagive"); } @Override public void PlayMusic () {System.out.println ("Audiq5Car Playmusic"); System.out.println (""); }}(5) Llame
paquete com.zengtao.demo; import com.zengtao.demo.factory.audifactory; import com.zengtao.demo.factory.audiq3car; import com.zengtao.demo.factory.audiq5car; clase pública principal {pública estatic estatic Audifactory (); // Use la fábrica para hacer un automóvil Q3 Audiq3Car Audiq3Car = Audiofactory.CreateCar (Audiq3Car.Class); // Use la fábrica para hacer un automóvil Q5 Audiq5Car Audiq5car = Audifactory.CreateCar (Audiq5car.class); // Comience a conducir y reproducir música Audiq3Car.drive (); Audiq3Car.playmusic (); audiq5car.drive (); audiq5car.playmusic (); }}(6) Resultados
En cuanto a lo anterior, el método de fábrica se utiliza para realizar el proceso simple de fabricación de un automóvil.
Primer punto:
En la fábrica abstracta, vemos que el método CreateCar (clase CLA), ¿por qué lo definimos así? Use Reflection para crear un automóvil específico. De esta manera, nuestros diferentes tipos de automóviles solo necesitan condiciones correspondientes, ¿se pueden producir? Por lo tanto, es beneficioso escribir de esta manera, al igual que muchos, Audi tiene series Q3, Q5, A4, A6, A7, A8 y otras.
Segundo punto:
Si tenemos otros automóviles, como BMW, que también tiene BMW X1, 320, X5, etc., también podemos implementarlo de manera muy simple, simplemente implementar la fábrica abstracta y luego implementar el automóvil abstracto en el automóvil específico, y la expansión también es muy conveniente.
Resumir
Es casi el momento de salir de la fábrica abstracta aquí. El modelo de método de fábrica es un modelo de diseño relativamente simple y bueno.
Pero también hay desventajas, como: si hay nuevos y otros tipos de automóviles, solo necesita implementar fábricas abstractas y automóviles abstractos, y luego crear dos nuevas clases
Pero si no es un automóvil, sino un teléfono móvil, entonces debe escribirlo todo, lo que hará que aparezcan muchas clases, ya sea adoptar el modelo de método de fábrica o decidir según las necesidades.
Nota: No aplique patrones de diseño en aras del diseño. Por supuesto, los patrones del método de fábrica también se usan comúnmente, como: el método de OnCreate de la actividad, también cargamos y generamos interfaces correspondientes en función del diseño XML que definimos, etc.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.