Strategi adalah pola perilaku objek dalam pola desain.
Stratrgy banyak digunakan. .
Di sini kita mengambil substitusi string sebagai contoh. Mungkin ada banyak cara untuk mengganti variabel di dalamnya, tergantung pada persyaratan pengguna, jadi kita perlu menyiapkan beberapa set alternatif karakter variabel.
Pertama, kami membuat reptempule kelas abstrak untuk mendefinisikan beberapa variabel dan metode umum:
Salinan kode adalah sebagai berikut:
Reptempule kelas abstrak publik {
string yang dilindungi OldString = "";
public void setOldString (String oldString) {
this.oldString = oldString;
}
newstring string yang dilindungi = "";
string publik getNewString () {
mengembalikan berita;
}
abstrak public void ganti () melempar pengecualian;
}
Ada metode abstrak abstrak dalam reptempule yang perlu diwariskan dengan jelas, dan penggantian ini sebenarnya adalah metode spesifik yang menggantikannya.
Kami sekarang memiliki dua alternatif karakter:
1. Ganti AAA dalam teks dengan BBB;
2. Ganti AAA dalam teks dengan CCC.
Kelas yang sesuai adalah Reptempuleone dan Reptempuletwo:
Salinan kode adalah sebagai berikut:
ReptempuleOne kelas publik memperluas Reptempule {
public void ganti () melempar Exception {
// Replacefirst adalah fitur baru dari jdk1.4 newstring = oldstring.replacefirst ("aaa", "bbbb")
System.out.println ("Ini ganti satu");
}
}
Salinan kode adalah sebagai berikut:
Reptempuletwo kelas publik memperluas Reptempule {
public void ganti () melempar Exception {
newstring = oldstring.replacefirst ("aaa", "ccc")
System.out.println ("Ini ganti dua");
}
}
Langkah 2: Kita perlu membuat kelas solusi algoritma untuk memberikan klien kemampuan untuk memilih algoritma secara bebas.
Salinan kode adalah sebagai berikut:
Reptempulesolve kelas publik {
strategi reptempule pribadi;
ReptempuleSolve publik (aturan Reptempule) {
this.strategy = aturan;
}
string publik getNewContext (situs situs, string oldstring) {
return strategy.replace (situs, oldstring);
}
public void changealgorithm (reptempule newalgorithm) {
strategi = newalgorithm;
}
}
Panggilannya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
tes kelas publik {
......
public void testReplace () {
// Gunakan set pertama alternatif Reptempulesolve solver = Reptempulesolve baru (Reptempulesimple ()) baru;
solver.getNewContext (situs, konteks);
// Gunakan set kedua pemecah = Reptempulesolve baru (ReptempuletWo () baru);
solver.getNewContext (situs, konteks);
}
.....
}
Kami telah mencapai tujuan algoritma switching secara bebas selama operasi.
Bahkan, bagian inti dari seluruh strategi adalah penggunaan kelas abstrak.
Strategi dan pabrik serupa. Pabrik berfokus pada membuat objek.
Strategi cocok untuk kesempatan berikut:
1. Simpan file dalam format yang berbeda;
2. Kompres file dengan algoritma yang berbeda;
3. mencegat gambar dengan algoritma yang berbeda;
4. Grafik output dari data yang sama dalam format yang berbeda, seperti kurva atau batang diagram blok.