खोज…


जावा में कमांड पैटर्न उदाहरण

विकिपीडिया परिभाषा:

कमांड पैटर्न एक व्यवहार डिजाइन पैटर्न है जिसमें किसी ऑब्जेक्ट का उपयोग किसी क्रिया को करने या बाद में किसी घटना को ट्रिगर करने के लिए आवश्यक सभी जानकारी को एनकैप करने के लिए किया जाता है

UML आरेख dofactory से :

यहाँ छवि विवरण दर्ज करें

बुनियादी घटक और वर्कफ़्लो:

  1. Command अमूर्त कमांड के लिए एक इंटरफ़ेस की घोषणा करता है जैसे execute()
  2. Receiver जानता है कि किसी विशेष कमांड को कैसे निष्पादित किया जाए
  3. Invoker रखती ConcreteCommand , जो निष्पादित किया जाना है
  4. Client बनाता है ConcreteCommand और असाइन Receiver
  5. ConcreteCommand Command और Receiver बीच बाध्यकारी को परिभाषित करता है

इस तरह, कमान पैटर्न Invoker के माध्यम से रिसीवर से भेजने वाले (क्लाइंट) अलग करता। इनवोकरों को पूरी जानकारी होती है कि किस कमांड को निष्पादित किया जाना है और कमांड को पता है कि किसी विशेष ऑपरेशन को निष्पादित करने के लिए किस रिसीवर को आमंत्रित किया जाना है।

सांकेतिक टुकड़ा:

interface Command {
    void execute();
}
class Receiver {
    public void switchOn(){
        System.out.println("Switch on from:"+this.getClass().getSimpleName());
    }
}
class OnCommand implements Command{
    private Receiver receiver;

    public OnCommand(Receiver receiver){
        this.receiver = receiver;
    }
    public void execute(){
        receiver.switchOn();
    }
}
class Invoker {
    private Command command;
  
    public Invoker(Command command){
        this.command = command;
    }
    public void execute(){
        this.command.execute();
    }
}

class TV extends Receiver{
    
    public String toString(){
        return this.getClass().getSimpleName();
    }
}
class DVDPlayer extends Receiver{
    
    public String toString(){
        return this.getClass().getSimpleName();
    }
}

public class CommandDemoEx{
    public static void main(String args[]){
        // On command for TV with same invoker 
        Receiver receiver = new TV();
        Command onCommand = new OnCommand(receiver);
        Invoker invoker = new Invoker(onCommand);
        invoker.execute();
        
        // On command for DVDPlayer with same invoker 
        receiver = new DVDPlayer();
        onCommand = new OnCommand(receiver);
        invoker = new Invoker(onCommand);
        invoker.execute();            
    }
}

उत्पादन:

Switch on from:TV
Switch on from:DVDPlayer

स्पष्टीकरण:

इस उदाहरण में,

  1. कमांड इंटरफ़ेस execute() विधि को परिभाषित करता है।
  2. OnCommand ConcreteCommand है, जो लागू करता है execute() विधि।
  3. प्राप्तकर्ता आधार वर्ग है।
  4. TV और DVDPlayer दो प्रकार के रिसीवर हैं , जो कंक्रीटकोमैंड जैसे ऑनकोमैंड को पास किए जाते हैं।
  5. इनवोकर में कमांड होता है। यह रिसीवर से डी-युगल प्रेषक की कुंजी है।
  6. इस कमांड को निष्पादित करने के लिए Invoker OnCommand -> को प्राप्त करता है जिसे रिसीवर (TV) कहते हैं।

Invoker का उपयोग करके, आप TV और DVDPlayer पर स्विच कर सकते हैं। यदि आप इस कार्यक्रम का विस्तार करते हैं, तो आप टीवी और डीवीडीप्लेयर दोनों को बंद कर देते हैं।

मुख्य उपयोग के मामले:

  1. कॉलबैक तंत्र को लागू करने के लिए
  2. पूर्ववत और फिर से कार्यक्षमता को लागू करने के लिए
  3. आदेशों के इतिहास को बनाए रखने के लिए


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow