Le mode de commande est le modèle le plus déroutant. dans votre programmation réelle. Le mode de commande n'est en fait pas un modèle très spécifique, et c'est précisément cette flexibilité qui rend les gens un peu confus.
Définition de la commande
De nombreux codes de mode de commande sont ciblés sur l'interface graphique.
Encapsulez ces commandes dans une classe, puis l'utilisateur (l'appelant) fonctionne sur cette classe. .
De toute évidence, l'avantage de le faire est qu'il est conforme aux caractéristiques de l'emballage et réduit le couplage.
À partir du mode de commande, j'ai également constaté qu'un «problème commun» du mode de conception: je semble aimer compliquer les problèmes simples et aimer ajouter des tiers à différentes classes. réutilisation du code.
Comment utiliser le mode de commande
Les codes de mode de commande spécifiques sont divers, car il existe différentes façons d'encapsuler les commandes, différents systèmes. L'exemple suivant est de résumer une commande dans une liste de collecte.
Un mode de commande typique nécessite une interface. Il existe une méthode unifiée dans l'interface, qui est "les commandes / demandes encapsulées en objets":
La copie de code est la suivante:
Commande d'interface publique {
Public Abstract Void Execute ();
}
Les codes de commande / de demande spécifiques sont d'implémenter la commande d'interface, et il existe trois commandes spécifiques ci-dessous:
La copie de code est la suivante:
L'ingénieur de classe publique implémente la commande {
public void execute () {
// Commande de l'ingénieur
}
}
Classe publique Programmer implémente la commande {
public void execute () {
// Commande du programmeur
}
}
classe publique le politicien implémente le commandement {
public void execute () {
// Faire le commandement du politicien
}
}
Comme d'habitude, nous pouvons appeler ces trois commandes directement, mais en utilisant le mode de commande, nous devons les résumer et les jeter dans la liste des boîtes noires:
La copie de code est la suivante:
Producteur de classe publique {
Liste statique publique ProduceRequests () {
List queue = new ArrayList ();
queue.add (new domestingineer ());
queue.add (nouveau politicien ());
queue.add (nouveau programmeur ());
retour de la file d'attente;
}
}
Après que ces trois commandes entrent dans la liste, ils ont perdu leurs caractéristiques d'apparence.
La copie de code est la suivante:
classe publique TestCommand {
public static void main (String [] args) {
Lister la queue = producteur.produrarequests ();
for (iterator it = queue.iterator (); it.hasnext ();)
// Sortez les fonctionnalités de la liste et d'autres fonctionnalités, et vous ne pouvez pas le déterminer.
// Ils sont au moins le "fils" de la commande d'interface.
((Command) it.next ()). Execute ();
}
}
On peut voir que l'appelant ne traite que l'interface et n'interagit pas avec la mise en œuvre spécifique. n'est pas nécessaire de modifier le code dans l'appelant TestCommand.
Après avoir compris le principe de base du code ci-dessus, tout le monde devrait avoir ses propres méthodes utilisées, en particulier dans la façon de séparer l'appelant et les commandes spécifiques, il existe de nombreuses méthodes d'implémentation. . Cette approche est juste pour la démonstration.
Une bonne raison d'utiliser le mode de commande est également parce qu'elle peut implémenter des fonctionnalités d'annulation, et chaque commande spécifique peut se souvenir de l'action qu'il vient de l'effectuer et de la restaurer si nécessaire.
Le mode de commande est largement utilisé dans la conception d'interface. Les commandes de menu en mode de commande Java utilisent.