Rumah > Java > javaTutorial > Analisis Contoh Corak Strategi Corak Reka Bentuk Java

Analisis Contoh Corak Strategi Corak Reka Bentuk Java

WBOY
Lepaskan: 2023-05-02 16:49:07
ke hadapan
1365 orang telah melayarinya

1. Pengenalan asas

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

2. Kaedah tradisional

(1) Gambar rajah kelas

Analisis Contoh Corak Strategi Corak Reka Bentuk Java

(2) Pelaksanaan pengekodan

1) Tentukan kelas abstrak EsPolicy dan takrifkan kaedah esPolicyHandler

public abstract class EsPolicy {
    public void esPolicyHandler() {
    }
}
Salin selepas log masuk

2) BbEsPolicy mewarisi EsPolicy dan menimpa kaedah esPolicyHandler

public class BbEsPolicy extends EsPolicy {
    @Override
    public void esPolicyHandler() {
        System.out.println("===处理基带板节能策略===");
    }
}
Salin selepas log masuk

PolicyHandler dalam Es.Policys kaedah

public class SpcEsPolicy extends EsPolicy {
    @Override
    public void esPolicyHandler() {
        System.out.println("===Spc节能策略处理===");
    }
}
Salin selepas log masuk

4) ProdEsPolicy mewarisi EsPolicy dan mengatasi kaedah esPolicyHandler

public class ProdEsPolicy extends EsPolicy {
    @Override
    public void esPolicyHandler() {
        System.out.println("===产品节能策略处理===");
    }
}
Salin selepas log masuk

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();
    }
}
Salin selepas log masuk

hasil pelaksanaan

===Processing base papan strategi penjimatan tenaga===

===Memproses Spc strategi penjimatan tenaga===
===Memproses strategi penjimatan tenaga produk===

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

<. 🎜>3. Mengamalkan corak strategi

(1) Gambar rajah kelas

Analisis Contoh Corak Strategi Corak Reka Bentuk Java (2) Pelaksanaan pengekodan

1) Tentukan antara muka strategi Dan tentukan kaedah abstrak

public interface EsPolicyHandler {
    void esPolicyHandler();
}
Salin selepas log masuk

2) BbEsPolicyHandler melaksanakan antara muka dasar dan melaksanakan kaedah esPolicyHandler

public class BbEsPolicyHandler implements EsPolicyHandler {
    @Override
    public void esPolicyHandler() {
        System.out.println("===基带板节能策略处理===");
    }
}
Salin selepas log masuk

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节能策略处理===");
    }
}
Salin selepas log masuk

5) Tentukan kelas abstrak EsPolicy dan suntik EsPolicyHandler sebagai atributnya

public class ProdEsPolicyHandler implements EsPolicyHandler {
    @Override
    public void esPolicyHandler() {
        System.out.println("===产品节能策略处理===");
    }
}
Salin selepas log masuk

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();
        }
    }
}
Salin selepas log masuk

7) spcespolicy mewarisi espolicy dan instantiates atribut antaramer di dalam pembina

public class BbEsPolicy extends EsPolicy {
    public BbEsPolicy() {
        esPolicyHandler = new BbEsPolicyHandler();
    }
}
Salin selepas log masuk

8) > 9) Ujian

public class SpcEsPolicy extends EsPolicy {
    public SpcEsPolicy() {
        esPolicyHandler = new SpcEsPolicyHandler();
    }
}
Salin selepas log masuk

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 strategi


1) Kunci kepada model strategi ialah : menganalisis bahagian yang berubah dan bahagian projek yang tidak berubah Bahagian

2) 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;

3) merangkumi prinsip "Dekat dengan pengubahsuaian, terbuka kepada sambungan", pelanggan menambah tingkah laku tanpa mengubah kod asal Ia hanya perlu menambah strategi (atau tingkah laku), mengelakkan penggunaan daripada berbilang penyata pemindahan (jika...else if...else)

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan