Maison  >  Article  >  Java  >  modèle de méthode d'usine de modèle de conception Java

modèle de méthode d'usine de modèle de conception Java

高洛峰
高洛峰original
2017-01-19 16:16:051355parcourir

Résumé

Le modèle de conception est un art Si vous comprenez vraiment cet art, vous constaterez que le monde deviendra plus beau.

Définition

Définir une interface pour créer des objets et laisser ses sous-classes décider quelle classe instancier

Scénarios d'utilisation

Toute utilisation d'objets complexes Vous pouvez utiliser le modèle d'usine n'importe où

UML

modèle de méthode dusine de modèle de conception Java

1. Usine abstraite

Usine abstraite : Nous savons tous que les usines, en général, il n'y en a qu'une fonction, qui est de produire. Par exemple, une usine automobile Geely fabrique des voitures Geely, un fabricant d'iPhone fabrique des iPhone, etc.
Cela peut donc être résumé de manière simple, ce qui est create();
2 . Usine de fabrication de voitures en béton

Usine de fabrication de voitures en béton : met en œuvre une usine abstraite, avec des processus et méthodes réels de fabrication de voitures, etc.

Voiture abstraite

3. Voiture abstraite : Nous savons généralement que les voitures peuvent courir, jouer de la musique, naviguer et tourner. Ce sont les caractéristiques communes des voitures

4. Les voitures en béton

Les voitures abstraites : le béton. La voiture réalise la voiture abstraite et a toutes ses fonctions. Bien sûr, différentes voitures peuvent avoir des fonctions différentes

Ce qui précède est une simple introduction. De manière générale, des usines automobiles spécifiques fabriquent des voitures correspondantes. fabrique des voitures Audi, l'usine de Volkswagen, qui fabrique des voitures Volkswagen, etc.

Démonstration de code

Nous avons clairement compris la relation entre eux ci-dessus, alors utilisez simplement le code pour démontrer et exprimer nos idées ci-dessus et logique dans le code :

(1) Usine automobile abstraite

package com.zengtao.demo.factory;
 
/**
 * 抽象工厂
 */
public abstract class CarFactory {
 
  public abstract <T extends Car> T createCar(Class<T> cla);
 
}

(2) Usine automobile spécifique

package com.zengtao.demo.factory;
 
/**
 * 奥迪工厂
 */
public class AudiFactory extends CarFactory {
 
  @SuppressWarnings("unchecked")
  @Override
  public <T extends Car> T createCar(Class<T> cla) {
    Car car = null;
    try {
      car = (Car) Class.forName(cla.getName()).newInstance();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return (T) car;
  }
 
}

(3) Définir une voiture abstraite

package com.zengtao.demo.factory;
 
public abstract class Car {
 
  public abstract void drive();
 
  public abstract void selfNagive();
 
  public abstract void playMusic();
 
}

(4) Voiture spécifique

(Audi q3)

package com.zengtao.demo.factory;
 
public class AudiQ3Car extends AudiCar {
 
  @Override
  public void drive() {
    System.out.println("AudiQ3Car 已经制造成功");
    System.out.println("AudiQ3Car drive");
  }
 
  @Override
  public void selfNagive() {
    System.out.println("AudiQ3Car selfNagive");
  }
 
  @Override
  public void playMusic() {
    System.out.println("AudiQ3Car playMusic");
    System.out.println("");
  }
}

(Audi q5)

package com.zengtao.demo.factory;
 
public class AudiQ5Car extends AudiCar {
 
  @Override
  public void drive() {
    System.out.println("AudiQ5Car 已经制造成功");
    System.out.println("AudiQ5Car drive");
  }
 
  @Override
  public void selfNagive() {
    System.out.println("AudiQ5Car selfNagive");
  }
 
  @Override
  public void playMusic() {
    System.out.println("AudiQ5Car playMusic");
    System.out.println("");
  }
 
}

(5) Appeler

package com.zengtao.demo;
 
import com.zengtao.demo.factory.AudiFactory;
import com.zengtao.demo.factory.AudiQ3Car;
import com.zengtao.demo.factory.AudiQ5Car;
 
public class Main {
 
  public static void main(String[] str) {
 
    // 创建工厂
    AudiFactory audiFactory = new AudiFactory();
 
    // 利用工厂制造q3车
    AudiQ3Car audiQ3Car = audiFactory.createCar(AudiQ3Car.class);
     // 利用工厂制造q5车
    AudiQ5Car audiQ5Car = audiFactory.createCar(AudiQ5Car.class);
 
    // 开始开车放音乐
    audiQ3Car.drive();
    audiQ3Car.playMusic();
 
    audiQ5Car.drive();
    audiQ5Car.playMusic();
 
  }
}

(6) Résultat

modèle de méthode dusine de modèle de conception Java

Ce qui précède utilise le modèle de méthode d'usine pour réaliser la fabrication Le processus simple d'une voiture

Le premier point :

Dans l'usine abstraite, nous voyons la méthode createCar(Class cla), pourquoi la définissons-nous comme ça, utilisons la réflexion pour créer des voitures spécifiques De cette façon, nos différents types de voitures n'ont besoin que de conditions correspondantes. pour les produire. Il est donc avantageux d'écrire comme ça, Audi a les q3, q5, a4, a6, a7 , a8 et d'autres séries sont les mêmes

Deuxième point :

Si nous avons d'autres voitures, comme BMW, et que nous avons également des BMW x1, 320, x5, etc., nous pouvons aussi être très simples Pour mettre en œuvre, il vous suffit d'implémenter l'usine abstraite, puis la voiture spécifique peut implémenter la voiture abstraite. L'extension est également très pratique

Résumé

L'usine abstraite est presque là, le modèle de méthode d'usine est une comparaison C'est un modèle de conception simple et bon

mais il a aussi des défauts. Par exemple : s'il y a de nouveaux types de voitures, il suffit d'implémenter des usines abstraites et des voitures abstraites, et de créer deux nouvelles classes

Mais si ce n'est pas une voiture mais un téléphone portable. , alors vous devez tout écrire. Cela fera apparaître de nombreuses classes. L'utilisation ou non du modèle de méthode d'usine dépend des besoins.

Remarque : vous ne devez pas appliquer de modèles de conception pour des raisons de conception. Bien sûr, le modèle de méthode d'usine est également couramment utilisé, comme la méthode onCreate d'Activité. Nous chargeons et générons également l'interface correspondante basée sur. la mise en page XML définie par nous-mêmes, etc. etc.

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun, et j'espère également que tout le monde soutiendra PHP. Site chinois.

Pour plus d'articles liés au modèle de méthode d'usine des modèles de conception Java, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn