


La différence entre le modèle d'usine abstrait et le modèle de méthode d'usine en Java
Nov 15, 2019 pm 04:01 PM1. Modèle d'usine simple
Caractéristiques?:
1. , classe abstraite sans interface. Il existe une méthode create() importante, qui utilise if ou switch pour créer un produit et le renvoyer.
2. La méthode create() est généralement statique, elle est donc également appelée usine statique.
Inconvénients?:
1. Mauvaise évolutivité (je souhaite ajouter une sorte de nouilles. En plus d'ajouter une nouvelle classe de produits de nouilles, je dois également modifier le méthode de classe d'usine).
2. Il n'est pas pris en charge lorsque différents produits nécessitent différents paramètres supplémentaires.
2. Modèle de méthode Factory
Description du modèle?:
Fournit une interface pour créer des objets (interface d'usine), soit sa classe d'implémentation (classe d'implémentation d'usine) décide quelle classe (classe de produit) instancier, et la classe d'implémentation crée des instances de la classe correspondante.
Modèleéléments de formulaire?:
Fournir une interface de classe de produit. Toutes les classes de produits doivent implémenter cette interface (il peut également s'agir d'une classe abstraite, c'est-à-dire d'un produit abstrait).
Fournit une interface de classe usine. Toutes les classes d'usine doivent implémenter cette interface (c'est-à-dire une usine abstraite).
Les instances de la classe de produits sont créées par la classe d'implémentation d'usine. La classe d’implémentation d’usine doit avoir une méthode pour instancier la classe de produit.
3. Modèle d'usine abstrait
Description du mode?:
consiste à créer un groupe de les objets liés ou interdépendants fournissent une interface sans spécifier leurs classes concrètes.
4. Différences
Le modèle d'usine abstrait est une version améliorée du modèle de méthode d'usine Il est utilisé pour créer un ensemble d'objets liés ou interdépendants.
La différence entre celui-ci et le modèle de méthode d'usine est que le modèle de méthode d'usine cible une structure hiérarchique de produit?; tandis que le modèle d'usine abstrait cible plusieurs structures hiérarchiques de produits.
En programmation, une structure de produit est généralement représentée par une interface ou une classe abstraite, c'est-à-dire que tous les produits fournis par le modèle de méthode d'usine sont dérivés de la même interface ou classe abstraite, et du modèle d'usine abstrait. Les produits fournis sont dérivés de différentes interfaces ou classes abstraites.
Dans le modèle abstrait d'usine, il existe un concept de famille de produits : la soi-disant famille de produits fait référence à une famille de produits fonctionnellement liés situés dans différentes structures hiérarchiques de produits. Les séries de produits fournies par le modèle d'usine abstrait forment une famille de produits ; tandis que les séries de produits fournies par la méthode d'usine sont appelées une structure hiérarchique.
Tutoriel recommandé?: Tutoriel 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pré-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusofperforming lightbetterine scénarios.

Tout d'abord, CheckifThefnKeySettingisInterferingyTryingBothThevolumeKeyAlonEndfn volumeKey, thentogglefnlockwithfn espifavailable.2.enterbios / uefidUringbootAnableFunctionKeysordiSablehotKeyModetoenSureVolumeSarereCognined.3.updateorreinstallAdriodriving

Utilisez la méthode .equals () pour comparer le contenu de la cha?ne, car == ne compare les références d'objet plut?t que le contenu; 1. Utilisez .equals () pour comparer également les valeurs de cha?ne; 2. Utiliser .EqualSignoreCase () pour comparer l'ignorance du cas; 3. Utilisez .Compareto () pour comparer les cha?nes dans l'ordre du dictionnaire, renvoyant 0, nombres négatifs ou positifs; 4. Utiliser .CompareToIgnoreCase () pour comparer le cas Ignorer; 5. Utilisez des objets.equals () ou de la méthode d'appel s?r pour traiter les cha?nes nulles pour éviter les exceptions de pointeur nul. En bref, vous devez éviter d'utiliser == pour les comparaisons de contenu de cha?ne, sauf s'il est explicitement nécessaire de vérifier si l'objet est en phase.

Calculé a un cache et les accès multiples ne sont pas recalculés lorsque la dépendance reste inchangée, tandis que les méthodes sont exécutées à chaque fois qu'elles sont appelées; 2.COMPUT est adapté aux calculs basés sur des données réactives. Les méthodes conviennent aux scénarios où les paramètres sont requis ou les appels fréquents, mais le résultat ne dépend pas de données réactives; 3.Coupation prend en charge les getters et les setters, ce qui peut réaliser la synchronisation bidirectionnelle des données, mais les méthodes ne sont pas prises en charge; 4. Résumé: Utilisez d'abord calculé pour améliorer les performances et utilisez des méthodes lors de la réussite des paramètres, de l'exécution d'opérations ou d'éviter le cache, en suivant le principe de "Si vous pouvez utiliser calculé, vous n'utilisez pas de méthodes".

Le module de journalisation de Python peut écrire des journaux dans les fichiers via FileHandler. Tout d'abord, appelez le processeur et format de fichier de configuration BasicConfig, tels que la définition du niveau sur les informations, en utilisant FileHandler pour écrire app.log; Deuxièmement, ajoutez StreamHandler pour atteindre la sortie à la console en même temps; Les scénarios avancés peuvent utiliser TimeRotingFileHandler pour diviser les journaux par le temps, par exemple, définir quand = 'Midnight' pour générer de nouveaux fichiers chaque jour et conserver 7 jours de sauvegarde, et assurez-vous que le répertoire de journal existe; Il est recommandé d'utiliser GetLogger (__ Name__) pour créer des journalistes nommés et produire

L'utilisation de String.join () (Java8) est la méthode recommandée la plus simple pour connecter les tableaux de cha?ne, spécifiez simplement le séparateur directement; 2. Pour les anciennes versions de Java ou lorsque plus de contr?le est nécessaire, vous pouvez utiliser StringBuilder pour traverser et épisser manuellement; 3. StringJoiner convient aux scénarios qui nécessitent des formats plus flexibles tels que les préfixes et les suffixes; 4. Utilisation de Arrays.Stream () combinée avec des collectionneurs.joining () convient au filtrage ou à la conversion du tableau avant de rejoindre; Pour résumer, si Java8 et supérieur est utilisé, la méthode String.join () doit être préférée dans la plupart des cas, ce qui est concis et facile à lire, mais pour une logique complexe, elle est recommandée.

Les types de conditions avancées de TypeScript implémentent le jugement logique entre les types via TextendU? X: Y Syntaxe. Ses capacités de base se reflètent dans les types de conditions distribuées, l'inférence de type inférieure et la construction d'outils de type complexe. 1. Le type conditionnel est distribué dans les paramètres de type nu et peut automatiquement diviser le type de joint, tel que pour obtenir la cha?ne [] | nombre []. 2. Utiliser la distribution pour construire des outils de filtrage et d'extraction: exclut exclut les types via TextendU? Never: T, extraire extrait les points communs via TextendU? T: jamais, et des filtres non nuls nuls / non définis. 3

Le NIO plut?t que Bio doit être préféré car il est basé sur les canaux et les tampons, prend en charge les E / S non bloquantes et implémente la gestion unique de la gestion de la greffe de plusieurs connexions via le sélecteur, ce qui réduit considérablement les frais généraux du thread; 2. La transmission de fichiers importante doit utiliser FileChannel.transferto () pour obtenir une copie nulle; 3.
