Von Examples of GoF Design Patterns in Java's core libraries Frage wurde zitiert, dassBeispiel für ein Java-Befehlsmuster mit der Klasse Runnable: Ist der Empfänger nicht vorhanden?
Alle Implementierungen von java.lang.Runnable sind Beispiele für Befehl Muster.
Gemäß meinem Verständnis von Muster-Befehl,
KundeInvoker ruft =>Invoker nennt ConcreteCommand =>ConcreteCommand Anrufe Empfänger Methode, die abstrakt implementiert Befehl Methode.
Werfen Sie einen Blick auf diese example
Befehlsmuster UML-Diagramm von this article arbeitet wie unten gezeigt.
Werfen Sie einen Blick auf diesen Code:
public class ThreadCommand{
public static void main(String args[]){
Thread t = new Thread(new MyRunnable());
t.start();
}
}
class MyRunnable implements Runnable{
public void run(){
System.out.println("Running:"+Thread.currentThread().getName());
}
}
- ThreadCommand ist Kunde
- Runnable Schnittstelle ist Befehl
- MyRunnable ist ConcreteCommmand
- ThemaInvoker mit
start()
Methode aufrufen ConcreteCommand implementaiton ist hier fehlt
Ist-Empfänger (die run()
Methode aufruft)? Oder spielt MyRunnable die kombinierte Rolle von ConcreteCommand und Receiver?
Das Objekt * receiver * ist der Typ, der die Geschäftslogik einer Anwendung darstellt. Die Verantwortung eines Befehls besteht nicht darin, die Geschäftslogik zu besitzen, sondern diese Geschäftslogik Clients zur Verfügung zu stellen, die eine gemeinsame und Standardschnittstelle verwenden, d. H. Die "Ausführen" -Methode. Dann denke ich, dass der Empfänger nicht nur ein Relikt von C/C++ ist. –