Partage de technologie

Explorez les modèles de commandes et leurs applications

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

mode commande

mode commande est un modèle de conception comportemental qui convertit une requête en un objet distinct contenant toutes les informations liées à la requête. Cette transformation vous permet de paramétrer des méthodes basées sur différentes requêtes, requêtes de retard ou de file d'attente, et d'implémenter des opérations annulables.

Structure du mode commande

Insérer la description de l'image ici

  1. expéditeur (Expéditeur) - également connu sous le nom de "Invoker" - la classe est responsable de l'initialisation de la requête, qui doit contenir une variable membre pour stocker une référence à l'objet de commande. L'expéditeur déclenche la commande sans envoyer de requête directement au destinataire. Notez que l'expéditeur n'est pas responsable de la création de l'objet de commande : il obtient généralement une commande pré-générée du client via un constructeur.
  2. CommandeL'interface (Commande) déclare généralement uniquement une méthode pour exécuter la commande.
  3. Commandes spécifiques (Concrete Commands) mettra en œuvre différents types de requêtes. La commande spécifique elle-même ne termine pas le travail, mais délègue l'appel à un objet de logique métier. Mais pour simplifier le code, ces classes peuvent être fusionnées. Les paramètres requis pour recevoir la méthode d'exécution de l'objet peuvent être déclarés comme variables membres de commandes spécifiques. Vous pouvez rendre l'objet de commande immuable et autoriser uniquement l'initialisation de ces variables membres via le constructeur.
  4. destinataire La classe (Récepteur) contient une partie de la logique métier. Presque n’importe quel objet peut servir de récepteur. La plupart des commandes ne traitent que des détails sur la manière de transmettre la demande au destinataire, et le destinataire effectuera lui-même le travail lui-même.
  5. client (Client) créera et configurera des objets de commande spécifiques. Le client doit transmettre tous les paramètres de la requête, y compris l'entité destinataire, au constructeur de la commande. Par la suite, la commande générée peut être associée à un ou plusieurs expéditeurs.

Code commun pour le mode commande :

//抽象接收者
public abstract class Receiver{
	public abstract void operation();
}

//具体接收者
public class Recevier1 extends Recevier{
	public void operation(){
		...
	}
}

//通用命令接口
public interface Command{
	void execute();
}

//具体命令类
public class ConcreteCommand1 implements Command{
	private Receiver receiver;
	
	public ConcreteCommand1(Receiver _receiver){
		 this.receiver = _receiver;
	}
	
	public void execute(){
		this.receiver.operation();
	}
}

//调用者类
public class Invoker{
	private Command command;
	
	public void setCommand(Command _command){
		this.command = _command;
	}
	
	public void executeCommand(){
		this.command.execute();
	}
	
}

//主程序类
public class Client{
	public static void main(String[] args){
		//调用者
		Invoker invoker = new Invoker();
		//接收者
		Receiver receiver1 = new Receiver1();
		//定义一个命令
		Command command = new ConcreteCommand1(receiver1);
		
		invoker.setCommand(command);
		invoker.executeCommand();
	}
}