Condivisione della tecnologia

Esplora i modelli di comando e le loro applicazioni

2024-07-11

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

modalità di comando

modalità di comando è un modello di progettazione comportamentale che converte una richiesta in un oggetto separato che contiene tutte le informazioni relative alla richiesta. Questa trasformazione consente di parametrizzare metodi in base a richieste diverse, ritardare o accodare richieste e implementare operazioni annullabili.

Struttura della modalità di comando

Inserisci qui la descrizione dell'immagine

  1. mittente La classe (Sender) - nota anche come "Invoker" - è responsabile dell'inizializzazione della richiesta, che deve contenere una variabile membro per memorizzare un riferimento all'oggetto comando. Il mittente attiva il comando senza inviare una richiesta direttamente al destinatario. Si noti che il mittente non è responsabile della creazione dell'oggetto comando: solitamente ottiene un comando pregenerato dal client tramite un costruttore.
  2. OrdineL'interfaccia (comando) di solito dichiara solo un metodo per eseguire il comando.
  3. Ordini specifici (Comandi Concreti) implementerà varie tipologie di richieste. Il comando specifico in sé non completa il lavoro, ma delega la chiamata a un oggetto di logica aziendale. Ma per semplificare il codice, queste classi possono essere unite. I parametri richiesti per ricevere il metodo di esecuzione dell'oggetto possono essere dichiarati come variabili membro di comandi specifici. È possibile rendere immutabile l'oggetto comando e consentire solo l'inizializzazione di queste variabili membro tramite il costruttore.
  4. ricevitore La classe (Destinatario) contiene parte della logica aziendale. Quasi ogni oggetto può fungere da ricevitore. La maggior parte dei comandi tratta solo i dettagli su come passare la richiesta al destinatario e il destinatario svolgerà da solo il lavoro vero e proprio.
  5. cliente (Client) creerà e configurerà oggetti comando specifici. Il client deve passare tutti i parametri della richiesta, inclusa l'entità ricevente, al costruttore del comando. Successivamente il comando generato potrà essere associato ad uno o più mittenti.

Codice comune per la modalità comando:

//抽象接收者
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();
	}
}