JavaRush /Blog Jawa /Random-JV /Pola printah ing tembung sampeyan dhewe
Roman_kh
tingkat
Харьков

Pola printah ing tembung sampeyan dhewe

Diterbitake ing grup

Halo kabeh, anggota Forum!

Aku wis rampung (kayane aku) nemtokake pola kasebut Commandlan aku pengin nyoba ngomong babagan "ing tembungku dhewe." Pola printah nganggo tembung sampeyan dhewe - 1Adhedhasar Wikipedia, kita bisa ngerteni manawa tujuane yaiku nggawe struktur sing kelas sing ngirim lan kelas sing nampa ora langsung gumantung. Ngatur panggilan bali menyang kelas sing kalebu kelas pangirim . Ing asas, iki ditulis kanthi cetha lan bener, nanging iki ing teori. Carane nindakake iki? Iki ngendi masalah diwiwiti, amarga ... gambaran wis ora dadi cetha lan ketok. Mulane, aku ngerti, aku mutusake kanggo ngandhani carane aku ngerti, bisa uga migunani kanggo wong: Adhedhasar katrangan tujuan pola iki, aku bakal nggabungake deskripsi karo kode supaya luwih jelas. amarga ing Wikipedia sing padha, umume kanggo akeh basa lan mulane katrangan kasebut dipisahake saka conto. Ana papat istilah ing pola iki, ayo padha njupuk kanggo saiki: printah ( command), printah panrima ( receiver), printah panelpon ( invoker) lan klien ( client). Aku bakal njupuk conto saka Wikipedia padha, iku cukup tolerable. Tugas kasebut minangka kelas Lightsing bisa nindakake rong perkara: nguripake lampu lan mateni. Ing babagan pola kasebut bakal dadi "panrima printah ( 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");
     }
}
Ayo nggawe antarmuka kanthi siji cara execute()sing bakal dieksekusi lan diarani pola "command ( command)" .
/*the Command interface*/

public interface Command{
    void execute();
}
Sampeyan perlu kanggo encapsulate eksekusi katrampilan kelas Light. Kanggo nindakake iki, kita bakal nggawe kelas TurnOnLightCommandlan TurnOffLightCommandsing ngleksanakake antarmuka Commandlan sing bakal nampa obyek kelas ing konstruktor Light. Lan saben wong bakal nindakake mung siji tumindak. Siji bakal nelpon cara turnOn(), lan liyane bakal nelpon 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();
   }
}
Saiki wektune kanggo nggawe obyek sing nampa metode obyek encapsulated iki Light. Ing babagan pola kasebut diarani panyeluk perintah (invoker). Ayo nelpon Switchlan supaya nampa variabel ing konstruktor Commandsing bakal digunakake ing cara digawe flipUp()lan 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();
    }
}
Lan mesthi, kita bakal nggawe kelas sing bakal digunakake kanggo ngerti apa sing kedadeyan ing umum. Iki bakal diarani cara utama, ing ngendi kabeh tumindak bakal ditindakake:
/*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();
   }
}
Output bakal kaya ing ngisor iki:
"The light is on"
"The light is off"

Ngendi iki ditrapake?

Tujuane jelas apa lan ngapa iki dibutuhake, yaiku: ing kahanan sing kudu dipisahake eksekusi tartamtu, iki trep banget. Supaya panggunaan sawetara fungsi ora gumantung ing implementasine tartamtu lan bisa diganti tanpa ngrusak sistem. kaya kiye...) Tulis komentarmu, ayo rembugan, mbok menawa ana sing bisa digampangake lan dicritakake luwih apik, kabeh bakal diowahi yen perlu) Supaya kanggo sing maca pisanan, bisa dadi cetha. Ya, sapa sing seneng artikel kasebut menehi tandha "+" :) Iki penting kanggo aku) Sajrone wektu, aku pengin nulis liyane babagan Builder, Singletonlan liya-liyane. Deleng uga artikelku liyane:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION