1) Dalam Corak Strategi, keluarga algoritma (kumpulan strategi) ditakrifkan dan dikapsulkan secara berasingan supaya ia boleh digantikan antara satu sama lain Mod ini menjadikan perubahan algoritma bebas Untuk pelanggan yang menggunakan algoritma
2) Algoritma ini merangkumi beberapa prinsip reka bentuk Pertama, ia memisahkan kod yang berubah daripada kod tidak berubah kedua, ia menyasarkan pengaturcaraan antara muka dan bukannya kelas konkrit (takrifan (antara muka dasar); ketiga, gunakan kombinasi/penggabungan. lebih banyak dan kurang pewarisan (pelanggan menggunakan strategi melalui gabungan)
Contohnya: untuk penjimatan tenaga alam sekitar, tiga kaedah penjimatan tenaga dicadangkan: penjimatan tenaga papan jalur asas, penjimatan tenaga SPC, Penjimatan tenaga produk, kaedah penjimatan tenaga yang berbeza, prosedur pemprosesan khusus yang berbeza untuk peralatan persekitaran
(1) Gambar rajah kelas
(2) Pelaksanaan pengekodan
1) Tentukan kelas abstrak EsPolicy dan takrifkan kaedah esPolicyHandler
public abstract class EsPolicy { public void esPolicyHandler() { } }
2) BbEsPolicy mewarisi EsPolicy dan menimpa kaedah esPolicyHandler
public class BbEsPolicy extends EsPolicy { @Override public void esPolicyHandler() { System.out.println("===处理基带板节能策略==="); } }
PolicyHandler dalam Es.Policys kaedah
public class SpcEsPolicy extends EsPolicy { @Override public void esPolicyHandler() { System.out.println("===Spc节能策略处理==="); } }
4) ProdEsPolicy mewarisi EsPolicy dan mengatasi kaedah esPolicyHandler
public class ProdEsPolicy extends EsPolicy { @Override public void esPolicyHandler() { System.out.println("===产品节能策略处理==="); } }
5) Ujian
public class EsPolicyTest { public static void main(String[] args) { EsPolicy bbEsPolicy = new BbEsPolicy(); bbEsPolicy.esPolicyHandler(); SpcEsPolicy spcEsPolicy = new SpcEsPolicy(); spcEsPolicy.esPolicyHandler(); ProdEsPolicy prodPolicy = new ProdEsPolicy(); prodPolicy.esPolicyHandler(); } }
hasil pelaksanaan
===Processing base papan strategi penjimatan tenaga===Masalah : kaedah tradisional adalah untuk mencapai gelagat berbeza bagi subkelas yang berbeza melalui subkelas yang mewarisi kelas induk dan mengatasi kaedah kelas induk Perubahan setempat pada kelas, terutamanya perubahan tempatan kepada kelas super, akan menjejaskan bahagian lain dan mempunyai kesan limpahan===Memproses Spc strategi penjimatan tenaga===
===Memproses strategi penjimatan tenaga produk===
<. 🎜>3. Mengamalkan corak strategi
(2) Pelaksanaan pengekodan
1) Tentukan antara muka strategi Dan tentukan kaedah abstrak
public interface EsPolicyHandler { void esPolicyHandler(); }
2) BbEsPolicyHandler melaksanakan antara muka dasar dan melaksanakan kaedah esPolicyHandler
public class BbEsPolicyHandler implements EsPolicyHandler { @Override public void esPolicyHandler() { System.out.println("===基带板节能策略处理==="); } }
3) SpcEsPolicyHandler melaksanakan antara muka dasar dan melaksanakan kaedah esPolicyHandler<🎜 ) ProdEsPolicyHandler Laksanakan antara muka dasar dan laksanakan kaedah esPolicyHandler
public class SpcEsPolicyHandler implements EsPolicyHandler { @Override public void esPolicyHandler() { System.out.println("===Spc节能策略处理==="); } }
5) Tentukan kelas abstrak EsPolicy dan suntik EsPolicyHandler sebagai atributnya
public class ProdEsPolicyHandler implements EsPolicyHandler { @Override public void esPolicyHandler() { System.out.println("===产品节能策略处理==="); } }
6) BbEsPolicy dalam antara muka ePolicyPolicy dan ePolicy segera Pembina
public abstract class EsPolicy { EsPolicyHandler esPolicyHandler; public void setEsPolicyHandler(EsPolicyHandler esPolicyHandler) { this.esPolicyHandler = esPolicyHandler; } public void esPolicyHandler() { if (null != esPolicyHandler) { esPolicyHandler.esPolicyHandler(); } } }
7) spcespolicy mewarisi espolicy dan instantiates atribut antaramer di dalam pembina
public class BbEsPolicy extends EsPolicy { public BbEsPolicy() { esPolicyHandler = new BbEsPolicyHandler(); } }
8) > 9) Ujian
public class SpcEsPolicy extends EsPolicy { public SpcEsPolicy() { esPolicyHandler = new SpcEsPolicyHandler(); } }
10) Keputusan pelaksanaan
===Memproses strategi penjimatan tenaga papan jalur asas======Spc pemprosesan strategi penjimatan tenaga= ==
===Pemprosesan strategi penjimatan tenaga produk===4. Nota dan butiran model strategi2) Idea teras corak strategi ialah: menggunakan lebih banyak kombinasi/agregasi dan kurang pewarisan menggunakan kombinasi kelas tingkah laku dan bukannya pewarisan tingkah laku, yang lebih fleksibel;
1) Kunci kepada model strategi ialah : menganalisis bahagian yang berubah dan bahagian projek yang tidak berubah Bahagian
4) Menyediakan cara untuk menggantikan hubungan warisan: Corak strategi merangkum algoritma dalam kelas Strategi bebas supaya anda boleh mengubahnya secara bebas Konteksnya, menjadikannya mudah untuk bertukar, mudah difahami dan mudah untuk dilanjutkan
5) Perlu diingat bahawa setiap kali strategi ditambah, kelas akan ditambah Jika terdapat terlalu banyak strategi , ia akan membawa kepada sejumlah besar kelas
Atas ialah kandungan terperinci Analisis Contoh Corak Strategi Corak Reka Bentuk Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!