Artikel ini menjelaskan prinsip dan penggunaan pola desain java. Bagikan untuk referensi Anda, sebagai berikut:
Pola kebijakan mendefinisikan serangkaian algoritma dan merangkum setiap algoritma, membuatnya dapat diganti satu sama lain. Pola kebijakan memungkinkan algoritma untuk berubah secara mandiri dari pelanggan yang menggunakannya. Di antara mereka, kelas TreeSet dan kelas TreeMap di JDK menggunakan pola kebijakan. Kedua kelas ini adalah kelas koleksi yang diurutkan, dan aturan penyortiran setara dengan serangkaian algoritma yang didefinisikan dalam pola kebijakan, dan kelas pengumpulan setara dengan kelas lingkungan dalam pola kebijakan untuk digunakan pengguna. Hanya mengetahui bahwa TreeSet dan TreeMap diurutkan. Adapun cara mengurutkan, itu ditentukan oleh algoritma penyortiran.
Model strategi terdiri dari tiga bagian: peran kebijakan abstrak, peran kebijakan spesifik, dan peran lingkungan.
Peran Kebijakan Abstrak : Kelas Kebijakan, biasanya diimplementasikan oleh antarmuka atau kelas abstrak.
Peran strategi spesifik : Kelas strategi abstrak diimplementasikan dan algoritma dan perilaku terkait dikemas.
Peran Lingkungan : memegang referensi ke kelas kebijakan dan akhirnya dipanggil ke klien.
Berikut adalah contoh kode pola kebijakan sederhana:
1. Peran strategi abstrak : Tentukan strategi antarmuka.
Paket com.test;/** * Pola strategi Peran abstrak * @author zhouwen * */strategi antarmuka publik {public int calculate (int a, int b);}2. Peran Strategi Khusus : Menerapkan Antarmuka Strategi. Dalam contoh, pengoperasian penambahan, pengurangan, perkalian dan divisi diimplementasikan.
Paket com.test;/*** Mode Kebijakan Kelas Strategi Khusus* Menerapkan operasi tambahan* @Author Zhouwen**/kelas publik AddStrategy mengimplementasikan strategi {@override int hitung (int a, int b) {return a + b; }} Paket com.test;/*** Mode Kebijakan Kelas Strategi Khusus* Menerapkan operasi pengurangan* @author zhouwen**/kelas publik Subtractstrategy mengimplementasikan strategi {@override public int calculate (int a, int b) {return a - b; }} Paket com.test;/** * Mode kebijakan Kelas strategi spesifik * Menerapkan operasi multiplikasi * @author zhouwen * */kelas publik Multiplystragety mengimplementasikan strategi {@Override Public int Calculate (int a, int b) {return a * b; }} Paket com.test;/*** Mode kebijakan Kelas strategi spesifik* Menerapkan operasi divisi* @author zhouwen**/kelas publik dividestry mengimplementasikan strategi {@override int calculate (int a, int b) {return a/b; }}3. Peran Lingkungan : Tentukan referensi peran abstrak dalam peran lingkungan dan mengekspos metode perhitungan untuk dihubungi klien.
Paket com.test;/** * Mode kebijakan Kelas lingkungan * @author zhouwen * */lingkungan kelas publik {strategi strategi pribadi; lingkungan publik (strategi strategi) {this.strategy = strategi; } // gunakan untuk mengubah kebijakan public void setStrategy (strategi strategi) {this.strategy = strategi; } strategi publik getStrategy () {return strategi; } // Ekspos antarmuka komputasi untuk klien untuk memanggil perhitungan int int (int a, int b) {return strategy.calculate (a, b); }}4. Akhirnya tulis kode klien:
Paket com.test; klien kelas publik {public static void main (string [] args) {addStrategy addstrategy = new addstrategy (); Lingkungan Lingkungan = Lingkungan Baru (AddStrategy); System.out.println (Environment.Calculate (3, 4)); SubtractStrategy Substrategy = new SubtractStrategy (); lingkungan.setstrategy (Substrategy); System.out.println (Environment.Calculate (3, 4)); Multiplestragety MultiplyStrategy = new Multiplystragety (); lingkungan.setstrategy (MultiplyStrategy); System.out.println (Environment.Calculate (3, 4)); Dividestryvegy Dividestry = Dividestry baru (); lingkungan.setstrategy (dividestry); System.out.println (Environment.Calculate (3, 4)); }}Meringkaskan:
Dengan klien System.out.println(environment.calculate(3, 4)); Kode ini, kami tidak tahu kelas implementasi mana yang disebut. Hanya dengan mengetahui kelas kebijakan spesifik yang diteruskan ke peran lingkungan, kita tahu kelas mana yang harus dihubungi. Ini dapat mencapai pemisahan klien dan algoritma kebijakan spesifik, membuat program mudah untuk beralih, memahami, dan memperluas.
Keuntungan dan Kerugian Model Strategi:
keuntungan:
1. Tujuan dari pola kebijakan adalah untuk merangkum setiap algoritma ke dalam kelas independen dengan antarmuka umum untuk satu set algoritma, sehingga mereka dapat digantikan oleh satu sama lain. Seperti yang disediakan dalam contoh, kebijakan digantikan oleh metode yang ditetapkan.
2. Pola kebijakan memungkinkan algoritma untuk berubah tanpa mempengaruhi klien. Gunakan pola kebijakan untuk memisahkan perilaku dari lingkungan.
3. Kelas Lingkungan bertanggung jawab untuk memelihara dan meminta kelas perilaku, dan berbagai algoritma disediakan dalam strategi tertentu. Karena algoritma dan lingkungan independen, modifikasi algoritma tidak akan mempengaruhi lingkungan dan klien.
kekurangan:
1. Klien harus mengetahui semua kelas kebijakan dan memutuskan kelas kebijakan mana yang akan digunakan atas kebijakannya sendiri.
2. Ini akan menyebabkan banyak strategi.
Untuk lebih banyak konten terkait Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Pendahuluan dan Tutorial Lanjutan tentang Pemrograman Berorientasi Objek Java", "Tutorial tentang Struktur Data Java dan Algorithma", "Ringkasan Keterampilan Operasi Java Java", "Ringkasan Operasi Java File dan Keterampilan Operasi Direktori" dan Ringkasan Java Operasi Java "," Ringkasan Operasi Java Keterampilan Operasi Direktori "dan" Ringkasan Java Ringkasan JAVA "
Saya harap artikel ini akan membantu pemrograman Java semua orang.