Maison >Java >JavaQuestions d'entretien >Nouvelles questions d'entretien Java 2020 - Modèles de conception

Nouvelles questions d'entretien Java 2020 - Modèles de conception

王林
王林avant
2020-06-22 17:19:302298parcourir

Nouvelles questions d'entretien Java 2020 - Modèles de conception

Quelle est la différence entre une usine simple et une usine abstraite ?

(Recommandations associées : questions d'entretien Java)

Mode usine simple :

Ce mode lui-même est très simple Et il est utilisé lorsque l’entreprise est relativement simple. Généralement utilisé pour les petits projets ou les situations où des produits spécifiques sont rarement étendus (de sorte que la classe d'usine n'ait pas besoin d'être modifiée fréquemment).

Il se compose de trois rôles :

  • Rôle d'usine : c'est le cœur de ce modèle et contient une certaine logique commerciale et logique de jugement, sur la base d'une logique différente, des produits d'usine spécifiques sont générés. Comme la classe Driver dans l'exemple.

  • Rôle abstrait du produit : Il s'agit généralement de la classe parent héritée d'un produit spécifique ou de l'interface implémentée. Implémenté par interface ou classe abstraite. Comme l'interface Car dans l'exemple.

  • Rôle produit spécifique : L'objet créé par la classe factory est une instance de ce rôle. Il est implémenté par une classe concrète en Java, comme les classes Benz et BMW dans l'exemple.

(apprentissage recommandé : programme d'introduction à Java )

utiliser des diagrammes de classes pour représenter clairement la relation entre eux :

Nouvelles questions dentretien Java 2020 - Modèles de conception

Modèle d'usine abstrait :

Commençons par comprendre ce qu'est une famille de produits : elle se situe dans différentes structures hiérarchiques de produits et a des fonctions associées. Une famille de produits connectés.

Nouvelles questions dentretien Java 2020 - Modèles de conception

BmwCar et BenzCar sur la photo sont deux arborescences de produits (hiérarchie des produits) et BenzSportsCar et BmwSportsCar, comme indiqué sur la photo, sont une seule famille de produits. Elles peuvent toutes être intégrées à la famille des voitures de sport, leurs fonctions sont donc liées. De la même manière, BmwBussinessCar et BenzBusinessCar constituent également une famille de produits.

On peut dire que la différence entre celui-ci et le modèle de méthode d'usine réside dans la complexité de création d'objets. De plus, le modèle d’usine abstrait est le plus abstrait et le plus général des trois. L'objectif du modèle d'usine abstraite est de fournir au client une interface capable de créer des objets produit dans plusieurs familles de produits.

Et les conditions suivantes doivent être remplies pour utiliser le modèle d'usine abstrait :

1 Il existe plusieurs familles de produits dans le système, et le système ne peut en consommer qu'une seule. des familles de produits à la fois

2. Les produits appartenant à la même famille de produits doivent être utilisés en conséquence.

(Tutoriel vidéo recommandé : Tutoriel vidéo Java )

Jetons un coup d'œil aux différents rôles du modèle d'usine abstrait (le même que la méthode d'usine ) :

  • Rôle abstrait de Factory : c'est le cœur du modèle de méthode Factory et cela n'a rien à voir avec l'application. C'est l'interface qu'un rôle d'usine spécifique doit implémenter ou la classe parent qui doit être héritée. En Java, il est implémenté par des classes abstraites ou des interfaces.

  • Rôle d'usine spécifique : il contient du code lié à une logique métier spécifique. Appelé par une application pour créer un objet correspondant à un produit spécifique. En Java, il est implémenté par des classes concrètes.

  • Rôle abstrait du produit : Il s'agit de la classe parent héritée d'un produit spécifique ou de l'interface implémentée. En Java, il existe généralement des classes ou interfaces abstraites à implémenter.

  • Rôle de produit spécifique : L'objet créé par le rôle d'usine spécifique est une instance de ce rôle. Il est implémenté par des classes spécifiques en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer