Artikel ini menjelaskan definisi dan penggunaan pola kebijakan Java. Bagikan untuk referensi Anda, sebagai berikut:
1. Definisi:
Tentukan serangkaian algoritma, merangkumnya satu per satu, dan memungkinkan mereka untuk digantikan satu sama lain.
2. Keuntungan:
(1) Konteks dan strategi spesifik digabungkan secara longgar, sehingga konteksnya hanya perlu mengetahui instance mana yang ingin digunakan untuk mengimplementasikan kelas antarmuka strategi, tetapi tidak perlu mengetahui kelas mana itu.
(2) Model kebijakan memenuhi prinsip pembukaan dan penutupan. Saat menambahkan kelas spesifik baru, tidak perlu memodifikasi kode kelas konteks. Konteksnya dapat merujuk pada instance dari kebijakan spesifik baru.
AKU AKU AKU. Contoh:
Berikut ini adalah penjelasan terperinci tentang model strategi melalui pertanyaan.
Persyaratan Eksperimental:
Xiao Ding adalah seorang programmer di Alibaba. Hari ini manajer proyek memberinya definisi kelas
Pekerja kelas publik {int id; Nama string; usia int;}Xiao Ding melihat bahwa ini bukan definisi pekerja, termasuk ID angka, nama, usia, dll.
Manajer mengatakan, saya ingin Anda menulis fungsi yang dapat menemukan yang tertua di antara sekelompok pekerja. Deklarasi metode adalah (atau sesuatu seperti ini):
Pencari Pencarian Pekerja (Daftar <Pherer> pekerja);
List<Worker> workers adalah data dari batch pekerja ini. Jika pekerja tertua ditemukan, objek pekerja akan dikembalikan. Jika pekerja tidak memiliki node, kembalikan nol.
Menjawab:
1. Strategi
Dalam mode kebijakan, antarmuka ini bernama Workstrategy (dalam pertanyaan tertentu, nama ini dapat dinamai sesuai dengan pertanyaan tertentu), dan kodenya adalah sebagai berikut:
Workstrategy.java
impor java.util.list; antarmuka publik Workstrategy {pekerja publik ageaverage (daftar <worker> daftar);}2. Konteks
Kebijakan yang berorientasi konteks adalah kelas yang berorientasi antarmuka; kodenya adalah sebagai berikut:
Maxage.java
impor java.util.list; maxage kelas publik {workstrategy workstrategy; public void setWorkStrategy (WorkStrategy Workstrategy) {this.workstrategy = WorkStrategy; } pekerja publik getFindMax (daftar <worker> daftar) {if (workstrategy! = null) return workstrategy.ageAverage (daftar); else {return null; }}}3. Strategi spesifik
Strategi spesifik adalah mengimplementasikan kelas antarmuka Workstrategy, yaitu, pekerja abstrak di antarmuka harus ditulis ulang.
Metode ageaverage (daftar <worker> daftar)
Kodenya adalah sebagai berikut:
StrategyMaxage.java
Impor java.util.list; strategi kelas publikMaxage mengimplementasikan Workstrategy {@Override pekerja publik ageaverage (daftar <worker> daftar) {int fs [] = int baru [list.size ()]; int maxage = 0; untuk (int j = 0; j <list.size (); j ++) {fs [j] = list.get (j) .getage (); if (fs [maxage] <= fs [j]) {maxage = j; }} return list.get (maxage); }}4. Penggunaan Mode Kebijakan
Application.java
impor java.util.arraylist; import java.util.list; aplikasi kelas publik {public static void main (string [] args) {list <worker> list = new arraylist <> (); list.add (pekerja baru (1, "Zhang San", 30)); list.add (pekerja baru (2, "li si", 40)); list.add (pekerja baru (3, "wang wu", 33)); Temuan maxage = maxage baru (); findage.setWorkStrategy (strategi baruMaxage ()); Pekerja findw = findage.getFindMax (daftar); System.out.println ("Hasil tes wulin.com:"); System.out.println ("Pekerja tertua:"+findw.getId ()+""+findw.getname ()+""+findw.getage ()); }} class worker {int id; Nama string; usia int; publik int getId () {return id; } public void setid (int id) {this.id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } public int getage () {usia kembali; } public void setage (int usia) {this.age = usia; } pekerja publik (int id, nama string, int usia) {super (); this.id = id; this.name = name; this.age = usia; } pekerja publik () {super (); // Todo Stub Konstruktor yang Dihasilkan Otomatis}}5. Hasil Operasi:
Untuk konten yang lebih terkait dengan Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Tutorial Struktur Data Java dan Algoritma", "Ringkasan Java Operation Dom Node Tips", "Ringkasan Tips Operasi Java File dan Direktori" dan "Ringkasan Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.