JavaRush /جاوا بلاگ /Random-SD /توهان جي پنهنجي لفظن ۾ حڪم جو نمونو
Roman_kh
سطح
Харьков

توهان جي پنهنجي لفظن ۾ حڪم جو نمونو

گروپ ۾ شايع ٿيل

سڀني کي سلام، فورم جا ميمبر!

مون چڱيءَ طرح (مون کي لڳي ٿو) نمونو معلوم ڪيو آهي Command۽ مان ان بابت ڳالهائڻ جي ڪوشش ڪرڻ چاهيان ٿو ”پنهنجي پنهنجي لفظن ۾“. توهان جي پنهنجي لفظن ۾ حڪم جو نمونو - 1وڪيپيڊيا جي بنياد تي، اسان اهو ڳولي سگهون ٿا ته ان جو مقصد هڪ اهڙي جوڙجڪ ٺاهڻ آهي جنهن ۾ موڪلڻ وارو طبقو ۽ وصول ڪندڙ طبقو سڌو سنئون هڪ ٻئي تي منحصر نه آهي. ھڪڙي ڪلاس ڏانھن ڪال بڪ کي منظم ڪرڻ جنھن ۾ موڪليندڙ طبقو شامل آھي . اصول ۾، اهو صاف ۽ صحيح لکيو ويو آهي، پر اهو نظريي ۾ آهي. اهو ڪيئن ڪجي؟ اهو آهي جتي مسئلا شروع ٿين ٿا، ڇاڪاڻ ته ... وضاحت هاڻي ايترو واضح ۽ واضح ناهي. تنهن ڪري، مون ان کي سمجهي ورتو، مون فيصلو ڪيو ته توهان کي ٻڌايان ته مون ان کي ڪيئن سمجهيو، ٿي سگهي ٿو اهو ڪنهن لاء ڪارائتو هجي: هن نموني جي مقصد جي وضاحت جي بنياد تي، مان ان کي وڌيڪ واضح ڪرڻ لاء ڪوڊ سان تفصيل کي گڏ ڪندس، ڇاڪاڻ ته ساڳئي وڪيپيڊيا ۾ انهن ڪيترن ئي ٻولين لاءِ ان کي عام ڪيو آهي ۽ ان ڪري وضاحت کي مثال کان الڳ ڪيو ويو آهي. ھن نموني ۾ چار اصطلاح آھن، اچو ته انھن کي ھاڻي سمجھون: ڪمانڊ( command)، ڪمانڊ رسيور( receiver)، ڪمانڊ ڪالر( invoker)، ۽ ڪلائنٽ( client). مان ان ئي وڪيپيڊيا مان هڪ مثال وٺندس، اهو ڪافي قابل برداشت آهي. ڪم ھڪڙو طبقو آھي Lightجيڪو ٻه شيون ڪري سگھن ٿا: روشني کي ڦيرايو ۽ ان کي بند ڪريو. نموني جي لحاظ کان اهو ٿيندو "ڪمانڊ وصول ڪندڙ ( receiver)"
/*Receiver class*/

public class Light{
     public Light(){  }

     public void turnOn(){
        System.out.println("The light is on");
     }

     public void turnOff(){
        System.out.println("The light is off");
     }
}
اچو ته ھڪڙي طريقي سان ھڪڙو انٽرفيس ٺاھيو جيڪو عمل ڪندو ۽ جنھن کي سڏيو ويندو آھي "ڪمانڊ ( )" نموني execute()جي اصطلاحن ۾.command
/*the Command interface*/

public interface Command{
    void execute();
}
اهو ضروري آهي ته طبقاتي صلاحيتن جي عمل کي ختم ڪرڻ لاء Light. هن کي ڪرڻ لاءِ، اسان ڪلاس ٺاهينداسين TurnOnLightCommand۽ TurnOffLightCommandاهو انٽرفيس کي لاڳو ڪندو Command۽ جيڪو Constructor ۾ هڪ طبقي اعتراض کي قبول ڪندو Light. ۽ انهن مان هر هڪ صرف هڪ عمل انجام ڏيندو. ھڪڙو سڏيندو طريقو turnOn()، ۽ ٻيو سڏيندو turnOff().
/*the Command for turning on the light*/

public class TurnOnLightCommand implements Command{
   private Light theLight;

   public TurnOnLightCommand(Light light){
        this.theLight=light;
       }

   public void execute(){
      theLight.turnOn();
   }
}

/*the Command for turning off the light*/

public class TurnOffLightCommand implements Command{
   private Light theLight;

   public TurnOffLightCommand(Light light){
        this.theLight=light;
       }

   public void execute(){
      theLight.turnOff();
   }
}
ھاڻي اھو وقت آھي ھڪڙو اعتراض ٺاھڻ جو جيڪو قبول ڪري سگھي ٿو انھن encapsulated اعتراض طريقن کي Light. نموني جي لحاظ کان، ان کي سڏيو ويندو آهي ڪمان ڪالر (انوڪر). اچو ته ان کي سڏيون Switch۽ ان کي ڪنسٽرڪٽر ۾ متغير قبول ڪرڻ ڏيو Commandجيڪي ٺاهيل طريقن ۾ استعمال ڪيا ويندا flipUp()۽ flipDown().
/*the Invoker class*/

public class Switch {
    private Command flipUpCommand;
    private Command flipDownCommand;

    public Switch(Command flipUpCommand,Command flipDownCommand){
         this.flipUpCommand=flipUpCommand;
         this.flipDownCommand=flipDownCommand;
    }

    public void flipUp(){
         flipUpCommand.execute();
    }

    public void flipDown(){
         flipDownCommand.execute();
    }
}
۽ يقينا، اسان هڪ ڪلاس ٺاهينداسين جيڪو انهن کي استعمال ڪرڻ لاء استعمال ڪندو عام طور تي ڇا ٿي رهيو آهي. اهو مکيه طريقو سڏيو ويندو، جنهن ۾ سڀ عمل ٿيندو:
/*The test class*/
public class TestCommand{
   public static void main(String[] args){
       // создаем an object, который будет использоваться
       Light l=new Light();
       // создаем an objectы для всех умений an object Light:
       Command switchUp=new TurnOnLightCommand(l);
       Command switchDown=new TurnOffLightCommand(l);

       // Создаемтся invoker, с которым мы будем непосредственно контактировать:
       Switch s=new Switch(switchUp,switchDown);

       // вот проверка этого, используем методы:
       s.flipUp();
       s.flipDown();
   }
}
پيداوار ھيٺ ڏنل ھوندي:
"The light is on"
"The light is off"

اهو ڪٿي لاڳو آهي؟

مقصد واضح آهي ته ڇا ۽ ڇو هن جي ضرورت آهي، يعني: اهڙي صورتحال ۾ جتي توهان کي هڪ مخصوص عمل کي الڳ ڪرڻ جي ضرورت آهي، اهو تمام آسان آهي. انهي ڪري ته ڪجهه افعال جو استعمال ڪنهن خاص عمل تي منحصر نه آهي ۽ اهو سسٽم کي نقصان پهچائڻ کان سواء تبديل ڪري سگهجي ٿو. ڪجهه هن طرح...) پنهنجا رايا لکو، اچو ته بحث ڪريون، ٿي سگهي ٿو ڪجهه آسان ڪري سگهجي ۽ بهتر ٻڌايو وڃي، جيڪڏهن ضروري هجي ته هر شي کي ايڊٽ ڪنداسين) ته جيئن انهن لاءِ جيڪي پهريون ڀيرو پڙهندا، اهو ممڪن طور تي واضح هجي. خير، جيڪو به مضمون پسند ڪري ٿو ان تي "+" رکي ٿو :) اهو منهنجي لاءِ اهم آهي) وقت گذرڻ سان، مان وڌيڪ لکڻ چاهيان ٿو Builder، Singleton۽ ٻين بابت. منهنجا ٻيا مضمون پڻ ڏسو:
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION