Latest web development tutorials

pola negara

Dalam modus negara (Pola Negara), perilaku kelas berdasarkan statusnya berubah. Jenis pola desain milik pola perilaku.

Dalam model negara, kita membuat objek dan berbagai kondisi perilaku bersama dengan keadaan representasi objek konteks perubahan objek diubah.

pengenalan

Maksud: Memungkinkan sebuah objek untuk mengubah perilaku dalam keadaan internal berubah, objek muncul untuk mengubah kelasnya.

Terutama untuk mengatasi: perilaku obyek tergantung pada keadaan (atribut), dan Anda dapat mengubahnya sesuai dengan perubahan perilaku yang berhubungan dengan keadaan.

Kapan menggunakan: Kode mengandung sejumlah besar objek yang berhubungan dengan status pernyataan bersyarat.

Cara untuk memperbaiki: status kelas khusus keluar abstrak.

Kode kunci: modus antarmuka perintah biasanya hanya satu metode.Status interface yang memiliki satu atau lebih metode. Selain itu, metode modus negara kelas implementasi, biasanya nilai kembali, atau mengubah nilai variabel instance. Artinya, negara dan keadaan model objek umumnya relevan. metode pelaksanaan kelas memiliki fungsi yang berbeda, metode antarmuka tertutup. Modus negara dan modus perintah yang sama juga dapat digunakan untuk menghilangkan kondisi lain jika ... pernyataan pilihan lain.

contoh aplikasi: 1, bermain pemain basket dapat memiliki keadaan normal, bukan negara dan abnormal keadaan normal.2, Marquis Yi lonceng Zeng, 'jam adalah antarmuka abstrak', 'jam A' dan negara tertentu lainnya, lingkungan khusus 'Bianzhong' (Konteks).

Keuntungan: 1, merangkum aturan transformasi.2, menyebutkan kemungkinan negara sebelum negara pencacahan perlu menentukan status spesies. 3, semua dengan perilaku yang berhubungan dengan negara ke dalam kelas, dan Anda dapat dengan mudah menambahkan negara baru, hanya perlu mengubah keadaan suatu objek dapat mengubah perilaku objek. 4, memungkinkan negara negara logika transisi dari objek dalam satu, bukan satu blok besar dari pernyataan bersyarat. 5, memungkinkan beberapa objek berbagi lingkungan objek negara, sehingga mengurangi jumlah objek dalam sistem.

Kekurangan: 1, pola negara penggunaan terikat untuk meningkatkan jumlah kelas sistem dan objek.2, struktur dan implementasi pola negara yang lebih kompleks, jika digunakan secara tidak benar dapat menyebabkan struktur program kebingungan dan kode. 3, dukungan untuk pola negara "Open Ditutup Prinsip" tidak sangat baik, Anda dapat beralih keadaan model negara, menambahkan kelas baru perlu untuk mengubah status mereka yang bertanggung jawab untuk transisi negara dari kode sumber, atau tidak dapat beralih ke negara baru, dan memodifikasi tindakan kelas negara juga perlu memodifikasi kode sumber dari kelas yang sesuai.

skenario penggunaan: 1, dengan perubahan perilaku negara dan perubahan adegan.2, cabang bersyarat pernyataan pengganti.

Catatan: Bila menggunakan perilaku negara dibatasi oleh negara mode, dan negara tidak lebih dari lima.

realisasi

Kami akan membuat antarmuka status badan dan implementasi kelasNegaraantarmukaNegara.Konteks adalah kelas dengan negara tertentu.

StatePatternDemo,kami menunjukkan penggunaan kelas dan status bendaKonteksuntuk menunjukkan perubahan perilaku di negara perubahan.

Negara pola diagram UML

Langkah 1

Buat sebuah antarmuka.

State.java

public interface State {
   public void doAction(Context context);
}

Langkah 2

Membuat kelas entitas yang mengimplementasikan antarmuka.

StartState.java

public class StartState mengimplementasikan Negara {

   public void doAction (konteks Konteks) {
      System.out.println ( "Pemain dalam keadaan start");
      context.setState (ini);	
   }

   String public toString () {
      kembali "Start Negara";
   }
}

StopState.java

public class StopState implements State {

   public void doAction(Context context) {
      System.out.println("Player is in stop state");
      context.setState(this);	
   }

   public String toString(){
      return "Stop State";
   }
}

Langkah 3

Membuat kelasKonteks.

Context.java

public class Konteks {
   Negara Negara swasta;

   Konteks publik () {
      negara = null;
   }

   public void setState (state Negara) {
      this.state = negara;		
   }

   publik Negara getState () {
      kembali negara;
   }
}

Langkah 4

GunakanKonteksuntuk melihat perilaku ketika negara perubahan perubahanNegara.

StatePatternDemo.java

public class StatePatternDemo {
   public static void main (String [] args) {
      Konteks konteks = new konteks ();

      StartState startState = baru StartState ();
      startState.doAction (konteks);

      System.out.println (context.getState () toString ().);

      StopState stopState = baru StopState ();
      stopState.doAction (konteks);

      System.out.println (context.getState () toString ().);
   }
}

Langkah 5

Verifikasi output.

Pemain dalam keadaan awal
Mulai Negara
Pemain dalam keadaan berhenti
berhenti Negara