corak strategi
Dalam Corak Strategi, gelagat kelas atau algoritmanya boleh ditukar semasa masa jalan. Corak reka bentuk jenis ini ialah corak tingkah laku.
Dalam corak strategi, kami mencipta objek yang mewakili pelbagai strategi dan objek konteks yang tingkah lakunya berubah apabila objek strategi berubah. Objek strategi mengubah algoritma pelaksanaan objek konteks.
Pengenalan
Niat: Tentukan siri algoritma, rangkumkannya satu demi satu dan jadikan ia boleh ditukar ganti.
Penyelesaian utama: Kerumitan dan kesukaran penyelenggaraan yang disebabkan oleh penggunaan if...else apabila terdapat berbilang algoritma yang serupa.
Bila hendak digunakan: Sistem mempunyai banyak, banyak kelas, dan yang membezakannya ialah kelakuan langsungnya.
Cara menyelesaikan: Ingkapsulkan algoritma ini ke dalam kelas satu demi satu dan gantikannya sewenang-wenangnya.
Kod kunci: Laksanakan antara muka yang sama.
Contoh aplikasi: 1 Petua Zhuge Liang, setiap petua adalah strategi. 2. Cara mengembara, memilih menunggang basikal atau menaiki kereta Setiap cara perjalanan adalah satu strategi. 3. LayoutManager dalam JAVA AWT.
Kelebihan: 1 Algoritma boleh ditukar secara bebas. 2. Elakkan menggunakan pelbagai pertimbangan bersyarat. 3. Kebolehskalaan yang baik.
Kelemahan: Kategori strategi akan meningkat. 2. Semua kelas strategi perlu didedahkan kepada dunia luar.
Senario penggunaan: 1 Jika terdapat banyak kelas dalam sistem dan perbezaan di antara mereka hanya tingkah laku mereka, maka corak strategi boleh digunakan untuk membuat objek berkelakuan dalam banyak. cara. 2. Sistem perlu memilih satu daripada beberapa algoritma secara dinamik. 3. Jika objek mempunyai banyak gelagat, gelagat ini perlu dilaksanakan menggunakan pelbagai pernyataan pemilihan bersyarat tanpa menggunakan corak yang sesuai.
Nota: Jika sistem mempunyai lebih daripada empat strategi, anda perlu mempertimbangkan untuk menggunakan mod campuran untuk menyelesaikan masalah pengembangan kelas dasar.
Pelaksanaan
Kami akan mencipta antara muka Strategi yang mentakrifkan aktiviti dan kelas strategi entiti yang melaksanakan antara muka Strategi. Konteks ialah kelas yang menggunakan strategi tertentu.
StrategyPatternDemo, kelas demo kami menggunakan Konteks dan objek strategi untuk menunjukkan perubahan tingkah laku Konteks apabila strategi yang dikonfigurasikan atau digunakan berubah.
Langkah 1
Buat antara muka.
Strategy.java
public interface Strategy { public int doOperation(int num1, int num2); }
Langkah 2
Buat kelas entiti yang melaksanakan antara muka.
OperationAdd.java
public class OperationAdd implements Strategy{ @Override public int doOperation(int num1, int num2) { return num1 + num2; } }
OperationSubstract.java
public class OperationSubstract implements Strategy{ @Override public int doOperation(int num1, int num2) { return num1 - num2; } }
OperationMultiply.java<🎜
public class OperationMultiply implements Strategy{ @Override public int doOperation(int num1, int num2) { return num1 * num2; } }Langkah 3Buat kelas
Konteks.
Context.java
public class Context { private Strategy strategy; public Context(Strategy strategy){ this.strategy = strategy; } public int executeStrategy(int num1, int num2){ return strategy.doOperation(num1, num2); } }Langkah 4Gunakan
Konteks untuk melihat apabila ia mengubah strategiStrategi tingkah laku berubah apabila.
StrategyPatternDemo.java
public class StrategyPatternDemo { public static void main(String[] args) { Context context = new Context(new OperationAdd()); System.out.println("10 + 5 = " + context.executeStrategy(10, 5)); context = new Context(new OperationSubstract()); System.out.println("10 - 5 = " + context.executeStrategy(10, 5)); context = new Context(new OperationMultiply()); System.out.println("10 * 5 = " + context.executeStrategy(10, 5)); } }
Langkah 5
Sahkan output.
rreeee