Comprendre les modèles de conception en comparant les implémentations en JavaScript et Java [mis à jour de temps en temps]

introduction

J'ai décidé d'écrire un modèle de conception en Python dans un laboratoire universitaire. Cependant, même si je ne comprenais pas correctement le modèle de conception, je sentais que je ne pouvais pas l'écrire en Python. Alors, comparons et comprenons les modèles de conception de Java et de votre JavaScript préféré. Si vous écrivez tous les modèles de cet article, ce sera long, je vais donc créer un article pour chaque modèle et remplir le tableau ci-dessous.

Qu'est-ce qu'un modèle de conception?

La douane doit résoudre les problèmes courants de conception de logiciels et les rendre réutilisables 23 types de modèles de conception GoF (Gang of Four) sont célèbres GoF est «Erich Gamma» «Richard Helm» «Ralph Johnson» «John Brisidis» Introduction du terme modèle de conception dans le développement logiciel pour la première fois dans "Modèle de conception pour réutilisation dans l'orientation objet"

Catégorie de modèle de conception

Les modèles de conception peuvent être classés selon différentes perspectives

Modèles de génération

** Résolvez le problème en vous concentrant sur le mécanisme de création d'objets et de contrôle du processus de création d'objets **

Nom du motif Aperçu
Factory Method Créer une instance d'une classe dérivée basée sur les données et les événements passés
Abstract Factory Créer une instance d'une classe sans révéler les détails de la classe concrète
Builder Séparez le processus de création d'un objet du formulaire de représentation. Créez toujours le même type d'objet
Prototype Utiliser une instance entièrement initialisée lors de la copie
Singleton Une classe avec une seule instance accessible globalement

Motif structurel

** Il s'agit de synthétiser des objets et est utilisé pour faciliter la compréhension des relations entre différents objets **

Nom du motif Aperçu
Adapter Faites correspondre les interfaces de différentes classes afin que même les classes qui ne prennent pas en charge les interfaces puissent être utilisées en combinaison.
Bridge Détachez l'interface de l'objet de l'implémentation, permettant à l'interface et l'implémentation d'être modifiées indépendamment
Composite En traitant uniformément la structure des objets individuels et des composites d'objets, vous pouvez faire plus que les traiter séparément.
Decorator Ajouter dynamiquement un traitement à un objet
Facade Une classe cache la complexité de l'ensemble du sous-système
Flyweight Utilisez des instances de petite taille pour partager efficacement les informations utilisées partout
Proxy Objet de substitution pour remplacer l'objet réel

Modèles de comportement

** Axé sur l'amélioration et la simplification de la communication entre les différents objets du système **

Nom du motif Aperçu
Interpreter Ajoutez des éléments linguistiques à votre application pour s'adapter à la grammaire de la langue cible
Template Method Créez un morceau de l'algorithme dans la méthode et retardez l'étape vers la sous-classe
Chain of Responsibility Comment passer des demandes en séquence dans une série d'objets et trouver un objet capable de gérer cet élément
Command Séparer l'opération d'exécution de commande de la position d'émission de la commande
Iterator Accéder aux éléments de la collection en séquence sans connaître le comportement interne de la collection
Mediator Simplifiez les interactions entre les classes et empêchez les classes de se référencer directement les unes les autres
Memento Enregistrer l'état interne de l'objet afin qu'il puisse être restauré plus tard
Observer Comment notifier de nombreuses classes de modifications et assurer la cohérence entre les classes
State Changer le comportement d'un objet lorsque l'état change~
Strategy Encapsule les algorithmes dans une classe et rend la sélection de l'algorithme indépendante de l'implémentation de la classe
Visitor Ajouter une nouvelle opération à une classe sans la modifier

référence

[Introduction aux modèles de conception appris dans le langage Java augmenté et révisé](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82% E7% 89% 88Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5% 85% A5% E9% 96% 80-% E7% B5 % 90% E5% 9F% 8E-% E6% B5% A9 / dp / 4797327030) Modèle de conception JavaScript

Recommended Posts

Comprendre les modèles de conception en comparant les implémentations en JavaScript et Java [mis à jour de temps en temps]
[Mis à jour de temps en temps] Résumé des modèles de conception en Java
Comprendre le modèle de stratégie en comparant le code JavaScript et Java
Comprendre le modèle Decorator en comparant le code JavaScript et Java
Comprendre le modèle d'état en comparant le code JavaScript et Java
Comprendre le modèle composite en comparant le code JavaScript et Java
[Mis à jour de temps en temps] Algorithme et bibliothèque LetCode
Résumé du début au chapitre 1 de l'introduction aux modèles de conception appris en langage Java
Résumé de vtkXMLUnstructuredGridReader (mis à jour de temps en temps)
Résumé du chapitre 2 de l'introduction aux modèles de conception appris en langage Java
Résumé de vtkOpenFOAMReader (mis à jour de temps en temps)
Livre de mots de l'ingénieur (mis à jour de temps en temps)
Chapitre 4 Résumé de l'introduction aux modèles de conception appris en langage Java
Résumé du chapitre 3 de l'introduction aux modèles de conception appris en langage Java
Mémo Tensorflow [mis à jour de temps à autre]
Manuel Python privé (mis à jour de temps en temps)
vtkClipPolyData / DataSet Summary (mis à jour de temps en temps)
[Mis à jour de temps à autre] Notes relatives au système d'exploitation après commercialisation
Résumé de vtkThreshold (mis à jour de temps en temps)
Récapitulatif des options gcc (mises à jour de temps en temps)
Notes sur l'apprentissage automatique (mises à jour de temps en temps)
Aide-mémoire pour le post-traitement d'OpenFOAM (mis à jour de temps en temps)
mémo d'apprentissage progate Python (mis à jour de temps en temps)
Pour représenter la date, l'heure, l'heure et les secondes en Python
Sites d'aide utiles, etc. (mis à jour de temps à autre)
Mémorandum des commandes, packages, termes, etc. utilisés sous Linux (mis à jour de temps en temps)
Convertir la date et l'heure zonées en temps Unixtime dans Python2.7
Comment mesurer le temps de traitement avec Python ou Java
Paramètres Apache, confirmation du journal, etc. (* Mis à jour de temps en temps)
[Mis à jour de temps en temps] Examen de Let Code NumPy
J'ai lu la référence Chainer (mise à jour de temps en temps)
Liste de mes articles pouvant être utiles aux pros de la compétition (mise à jour de temps en temps)