Latest web development tutorials

Modus strategi

Strategi Mode (Strategi Pola), tindakan kelas, atau algoritma dapat diubah pada saat runtime. Jenis pola desain milik pola perilaku.

Dalam mode strategi, kita membuat objek dan berbagai strategi perubahan perilaku sebagai objek kebijakan untuk mengubah representasi objek konteks. objek kebijakan untuk mengubah eksekusi algoritma objek konteks.

pengenalan

Maksud: Definisi keluarga algoritma, merangkum masing-masing mereka, dan membuat mereka saling dipertukarkan.

Terutama untuk mengatasi: Dalam kasus beberapa algoritma yang sama menggunakan jika ... lain membawa kompleks dan sulit untuk mempertahankan.

Kapan menggunakan: sistem memiliki banyak, banyak kategori, dan untuk membedakan mereka hanya perilaku mereka segera.

Cara untuk memperbaiki: akan algoritma ini ke dalam paket kelas sewenang-wenang diganti.

Kode kunci: mengimplementasikan antarmuka yang sama.

contoh aplikasi: 1, ide-ide bagus Zhuge Liang, setiap kit adalah strategi.2, cara perjalanan untuk bepergian, memilih untuk naik sepeda, dengan mobil, masing-masing cara untuk bepergian adalah strategi. 3, JAWA AWT LayoutManager.

Keuntungan: 1, algoritma bebas dapat beralih.2, untuk menghindari penggunaan beberapa bersyarat. 3, skalabilitas yang baik.

Kekurangan: 1, Strategi akan meningkat.2, semua kelas perlu paparan kebijakan luar negeri.

Penggunaan skenario: 1, jika ada suatu sistem di mana banyak kelas, perbedaan antara mereka hanya dalam perilaku mereka, kemudian menggunakan pola strategi dinamis dapat memilih untuk membiarkan suatu tindakan dalam banyak perilaku suatu objek.2, sistem perlu untuk memilih dinamis salah satu dari beberapa algoritma. 3. Jika suatu benda memiliki banyak perilaku, jika itu bukan modus yang tepat, tindakan ini harus menggunakan beberapa kondisi yang dipilih pernyataan untuk mencapai.

Catatan: Jika kebijakan sistem lebih dari empat, Anda perlu mempertimbangkan penggunaan campuran-mode, untuk memecahkan masalah kelas kebijakan ekspansi.

realisasi

Kami akan membuat terdefinisi dengan baik antarmuka dan implementasi kegiatan entitas antarmukaStrategiStrategi Strategi.Konteksadalah penggunaan kebijakan kelas tertentu.

StrategyPatternDemo,kelas demonstrasi kami menggunakanKonteksdan kebijakan objek untuk menunjukkan perilaku bila digunakan untuk mengkonfigurasi atau mengubah perubahan kebijakan.

pola strategi diagram UML

Langkah 1

Buat sebuah antarmuka.

Strategy.java

Strategi public interface {
   public int doOperation (int num1, int num2);
}

Langkah 2

Membuat kelas entitas yang mengimplementasikan antarmuka.

OperationAdd.java

public class OperationAdd mengimplementasikan Strategi {
   @ Override
   public int doOperation (int num1, int num2) {
      kembali num1 + num2;
   }
}

OperationSubstract.java

public class OperationSubstract mengimplementasikan Strategi {
   @ Override
   public int doOperation (int num1, int num2) {
      kembali num1 - num2;
   }
}

OperationMultiply.java

public class OperationMultiply mengimplementasikan Strategi {
   @ Override
   public int doOperation (int num1, int num2) {
      kembali num1 * num2;
   }
}

Langkah 3

Membuat kelasKonteks.

Context.java

public class Konteks {
   Strategi Strategi swasta;

   Konteks umum (strategi Strategi) {
      this.strategy = strategi;
   }

   public int executeStrategy (int num1, int num2) {
      kembali strategy.doOperation (num1, num2);
   }
}

Langkah 4

GunakanKonteksuntuk melihat ketika perubahanStrategiperilaku strategiperubahan.

StrategyPatternDemo.java

public class StrategyPatternDemo {
   public static void main (String [] args) {
      konteks konteks = new konteks (OperationAdd baru ());		
      System.out.println ( "10 + 5 =" + context.executeStrategy (10, 5));

      context = baru Konteks (OperationSubstract baru ());		
      System.out.println ( "10-5 =" + context.executeStrategy (10, 5));

      context = baru Konteks (OperationMultiply baru ());		
      System.out.println ( "10 * 5 =" + context.executeStrategy (10, 5));
   }
}

Langkah 5

Verifikasi output.

10 + 5 = 15
10--5 = 5
10 * 5 = 50