JavaRush /Java Blog /Random-TK /Öz sözleriňiz bilen buýruk nagşy
Roman_kh
Dereje
Харьков

Öz sözleriňiz bilen buýruk nagşy

Toparda çap edildi

Hemmelere salam, Forumyň agzalary!

Men bu nagşy düýpli düşündim Commandwe bu hakda "öz sözlerim bilen" gürleşmek isleýärin. Wikipediýa esaslanyp, maksadynyň iberýän synp bilen kabul ediji synpyň biri-birine gönüden-göni bagly bolmadyk gurluşyny döretmekdiginiÖz sözleriňiz bilen buýruk nagşy - 1 bilip bileris . Iberiji synpy öz içine alýan synpa jaň etmek . Aslynda, takyk we dogry ýazylýar, ýöne bu teoriýada. Muny nädip etmeli? Meseleler şu ýerden başlaýar, sebäbi ... beýany indi beýle düşnükli we düşnükli däl. Şonuň üçinem düşündim, nädip düşünendigimi aýtmagy makul bildim, belki kimdir biri üçin peýdaly bolar: Bu nagşyň maksadynyň beýanyna esaslanyp, düşündirişi kod bilen has düşnükli ederin, sebäbi şol bir Wikipediýada ony köp dilde umumylaşdyrdylar we şonuň üçin düşündiriş mysaldan aýryldy. Bu nagyşda dört adalga bar, geliň häzirlikçe kabul edeliň: buýruklar ( command), buýruk kabul ediji ( receiver), buýruk çagyrýan ( invoker) we müşderi ( client). Şol bir Wikipediadan mysal alaryn, gaty çydamly. Wezipe iki zady edip bilýän synpdyr Light: çyrany ýakyň we öçüriň. Nagyş nukdaýnazaryndan “buýruk kabul ediji ( receiver)” bolar
/*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");
     }
}
Geliň, ýerine ýetirjek we "buýruk ( )" nagşy execute()boýunça çagyrylýan bir usul bilen interfeýs döredeliňcommand
/*the Command interface*/

public interface Command{
    void execute();
}
Synp endikleriniň ýerine ýetirilmegini jemlemek zerurdyr Light. Munuň üçin konstruktordaky synp obýektini kabul etjek we TurnOnLightCommandinterfeýsi TurnOffLightCommanddurmuşa geçirýän synplary dörederis . Olaryň hersi diňe bir hereket eder. Biri usuly çagyrar , beýlekisi jaň eder . CommandLightturnOn()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();
   }
}
Indi bu gaplanan obýekt usullaryny kabul edýän obýekt döretmegiň wagty geldi Light. Nagyş nukdaýnazaryndan buýruk çagyrýan (çagyryjy) diýilýär. Geliň, oňa jaň edeliň we döredilen usullarda ulanyljak Switchkonstruktordaky üýtgeýjileri kabul edeliň we . CommandflipUp()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();
    }
}
Elbetde, umuman nämeleriň bolup geçýändigine düşünmek üçin olary ulanjak synp dörederis. Thehli hereketleriň boljak esasy usuly diýlip atlandyrylar:
/*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();
   }
}
Çykyş aşakdakylar bolar:
"The light is on"
"The light is off"

Bu nirede ulanylýar?

Maksat munuň nämä we näme üçin zerurdygy düşnüklidir, ýagny: belli bir ýerine ýetirişi aýyrmaly ýagdaýyňyzda bu gaty amatly. Käbir funksiýalaryň ulanylmagy belli bir durmuşa geçirilmegine bagly bolmazlygy we ulgama zyýan ýetirmezden üýtgedilmegi mümkin. şuňa meňzeş bir zat ...) Teswirleriňizi ýazyň, ara alyp maslahatlaşalyň, belki bir zady has ýönekeýleşdirip, has gowy aýdyp bolar, zerur bolsa hemme zady redaktirläris) Şeýlelik bilen ilkinji gezek okaýanlar üçin mümkin boldugyça düşnükli bolar. BuilderGaraz, makalany kim halasa, oňa “+” goýýar :) Bu meniň üçin möhümdir) Wagtyň geçmegi bilen we beýlekiler hakda has köp ýazasym gelýär Singleton. Beýleki makalalarymy hem görüň:
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION