Technologieaustausch

Entdecken Sie Befehlsmuster und ihre Anwendungen

2024-07-11

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

Befehlsmodus

Befehlsmodus ist ein Verhaltensentwurfsmuster, das eine Anfrage in ein separates Objekt umwandelt, das alle mit der Anfrage verbundenen Informationen enthält. Diese Transformation ermöglicht es Ihnen, Methoden basierend auf unterschiedlichen Anforderungen zu parametrisieren, Anforderungen zu verzögern oder in die Warteschlange zu stellen und rückgängig zu machende Vorgänge zu implementieren.

Struktur des Befehlsmodus

Fügen Sie hier eine Bildbeschreibung ein

  1. Absender Die Klasse (Sender) – auch bekannt als „Invoker“ – ist für die Initialisierung der Anforderung verantwortlich, die eine Mitgliedsvariable enthalten muss, um einen Verweis auf das Befehlsobjekt zu speichern. Der Sender löst den Befehl aus, ohne eine Anfrage direkt an den Empfänger zu senden. Beachten Sie, dass der Absender nicht für die Erstellung des Befehlsobjekts verantwortlich ist: Er erhält normalerweise einen vorab generierten Befehl vom Client über einen Konstruktor.
  2. BefehlDie (Befehls-)Schnittstelle deklariert normalerweise nur eine Methode zum Ausführen des Befehls.
  3. Spezifische Bestellungen (Concrete Commands) implementiert verschiedene Arten von Anfragen. Der spezifische Befehl selbst schließt die Arbeit nicht ab, sondern delegiert den Aufruf an ein Geschäftslogikobjekt. Um den Code zu vereinfachen, können diese Klassen jedoch zusammengeführt werden. Die zum Empfangen der Ausführungsmethode des Objekts erforderlichen Parameter können als Mitgliedsvariablen bestimmter Befehle deklariert werden. Sie können das Befehlsobjekt unveränderlich machen und nur die Initialisierung dieser Mitgliedsvariablen durch den Konstruktor zulassen.
  4. Empfänger Die Klasse (Empfänger) enthält einen Teil der Geschäftslogik. Als Empfänger kann nahezu jeder Gegenstand dienen. Die meisten Befehle befassen sich nur mit den Details, wie die Anfrage an den Empfänger weitergeleitet wird, und der Empfänger erledigt die eigentliche Arbeit selbst.
  5. Klient (Client) erstellt und konfiguriert spezifische Befehlsobjekte. Der Client muss alle Anforderungsparameter, einschließlich der Empfängerentität, an den Konstruktor des Befehls übergeben. Anschließend kann der generierte Befehl einem oder mehreren Absendern zugeordnet werden.

Allgemeiner Code für den Befehlsmodus:

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