Design patterns
कमांड पैटर्न
खोज…
जावा में कमांड पैटर्न उदाहरण
विकिपीडिया परिभाषा:
कमांड पैटर्न एक व्यवहार डिजाइन पैटर्न है जिसमें किसी ऑब्जेक्ट का उपयोग किसी क्रिया को करने या बाद में किसी घटना को ट्रिगर करने के लिए आवश्यक सभी जानकारी को एनकैप करने के लिए किया जाता है
UML आरेख dofactory से :
बुनियादी घटक और वर्कफ़्लो:
-
Command
अमूर्त कमांड के लिए एक इंटरफ़ेस की घोषणा करता है जैसेexecute()
-
Receiver
जानता है कि किसी विशेष कमांड को कैसे निष्पादित किया जाए -
Invoker
रखतीConcreteCommand
, जो निष्पादित किया जाना है -
Client
बनाता हैConcreteCommand
और असाइनReceiver
-
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
स्पष्टीकरण:
इस उदाहरण में,
- कमांड इंटरफ़ेस
execute()
विधि को परिभाषित करता है। - OnCommand ConcreteCommand है, जो लागू करता है
execute()
विधि। - प्राप्तकर्ता आधार वर्ग है।
- TV और DVDPlayer दो प्रकार के रिसीवर हैं , जो कंक्रीटकोमैंड जैसे ऑनकोमैंड को पास किए जाते हैं।
- इनवोकर में कमांड होता है। यह रिसीवर से डी-युगल प्रेषक की कुंजी है।
- इस कमांड को निष्पादित करने के लिए Invoker OnCommand -> को प्राप्त करता है जिसे रिसीवर (TV) कहते हैं।
Invoker का उपयोग करके, आप TV और DVDPlayer पर स्विच कर सकते हैं। यदि आप इस कार्यक्रम का विस्तार करते हैं, तो आप टीवी और डीवीडीप्लेयर दोनों को बंद कर देते हैं।
मुख्य उपयोग के मामले:
- कॉलबैक तंत्र को लागू करने के लिए
- पूर्ववत और फिर से कार्यक्षमता को लागू करने के लिए
- आदेशों के इतिहास को बनाए रखने के लिए