Rumah > Java > javaTutorial > Fahami kelebihan dan senario yang boleh digunakan bagi corak penghias dan corak strategi: membina kaedah kod Java yang mudah diselenggara

Fahami kelebihan dan senario yang boleh digunakan bagi corak penghias dan corak strategi: membina kaedah kod Java yang mudah diselenggara

WBOY
Lepaskan: 2023-12-23 14:07:01
asal
1128 orang telah melayarinya

Fahami kelebihan dan senario yang boleh digunakan bagi corak penghias dan corak strategi: membina kaedah kod Java yang mudah diselenggara

Membina kod Java yang boleh diselenggara: Memahami kelebihan dan senario terpakai bagi corak penghias dan corak strategi memerlukan contoh kod khusus

Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat pembangunan perisian, membina kod yang boleh diselenggara telah menjadi isu penting untuk semua orang . Ini adalah isu yang amat dititikberatkan oleh pembangun. Kod yang boleh diselenggara boleh mengurangkan kesukaran penyelenggaraan kemudian dan meningkatkan kebolehbacaan dan kebolehskalaan kod. Dalam pembangunan Java, corak penghias dan corak strategi ialah dua corak reka bentuk yang biasa digunakan, yang boleh membantu kami membina kod yang lebih boleh diselenggara.

Corak penghias ialah corak reka bentuk struktur yang membolehkan kita menambah fungsi baharu pada objek secara dinamik tanpa mengubah struktur objek sedia ada. Mod ini mencapai kesan menambah kefungsian secara dinamik pada objek dengan membalut objek dalam kelas hiasan, dan kemudian menindih kelas hiasan secara rekursif mengikut keperluan semasa masa jalan.

Di bawah ini kami menunjukkan penggunaan corak penghias melalui contoh tertentu. Katakan kita ada program kedai kopi yang ringkas Kedai kopi menyediakan pelbagai minuman kopi, seperti espresso, mocha, dll. Setiap minuman kopi mempunyai harga asas, dengan pilihan untuk menambah bahan tambahan seperti susu, sirap dan lain-lain, yang masing-masing mempunyai harga. Kita boleh menggunakan corak penghias untuk mencapai fungsi ini.

Pertama, kami mentakrifkan antara muka minuman kopi asas:

public interface Coffee {
    double getPrice();
    String getDescription();
}
Salin selepas log masuk

Kemudian, kami melaksanakan kelas minuman kopi tertentu:

public class Espresso implements Coffee {
    @Override
    public double getPrice() {
        return 3.5;
    }

    @Override
    public String getDescription() {
        return "Espresso";
    }
}
Salin selepas log masuk

Seterusnya, kami mentakrifkan kelas abstrak penghias, yang melaksanakan antara muka minuman kopi.

public abstract class CoffeeDecorator implements Coffee {
    private Coffee coffee;

    public CoffeeDecorator(Coffee coffee) {
        this.coffee = coffee;
    }

    @Override
    public double getPrice() {
        return coffee.getPrice();
    }

    @Override
    public String getDescription() {
        return coffee.getDescription();
    }
}
Salin selepas log masuk

Kemudian, kita boleh melaksanakan kelas penghias tertentu, seperti penghias untuk menambah susu dan penghias untuk menambah sirap.

public class MilkDecorator extends CoffeeDecorator {
    public MilkDecorator(Coffee coffee) {
        super(coffee);
    }

    @Override
    public double getPrice() {
        return super.getPrice() + 1.0;  // 添加牛奶的价格
    }

    @Override
    public String getDescription() {
        return super.getDescription() + ", Milk";  // 添加描述信息
    }
}

public class SyrupDecorator extends CoffeeDecorator {
    public SyrupDecorator(Coffee coffee) {
        super(coffee);
    }

    @Override
    public double getPrice() {
        return super.getPrice() + 0.5;  // 添加糖浆的价格
    }

    @Override
    public String getDescription() {
        return super.getDescription() + ", Syrup";  // 添加描述信息
    }
}
Salin selepas log masuk

Akhir sekali, kita boleh menggunakan corak penghias untuk membina minuman kopi yang berbeza. Sebagai contoh, kita boleh mencipta espresso dan kemudian menambah susu dan sirap secara rekursif.

Coffee espresso = new Espresso();
Coffee coffeeWithMilkAndSyrup = new SyrupDecorator(new MilkDecorator(espresso));

System.out.println(coffeeWithMilkAndSyrup.getDescription());
System.out.println(coffeeWithMilkAndSyrup.getPrice());
Salin selepas log masuk

Hasil keluaran kod di atas ialah:

Espresso, Milk, Syrup
5.0
Salin selepas log masuk

Dengan menggunakan corak penghias, kita boleh menambah bahan secara fleksibel pada minuman kopi tanpa mengubahsuai kelas minuman kopi asal. Dengan cara ini, kita boleh dengan lebih mudah melanjutkan fungsi minuman kopi, dan pada masa yang sama meningkatkan kebolehselenggaraan kod.

Satu lagi corak reka bentuk yang biasa digunakan ialah corak strategi, iaitu corak reka bentuk tingkah laku yang digunakan untuk memilih strategi yang sesuai untuk algoritma pada masa jalan. Corak strategi merangkum algoritma ke dalam kelas strategi bebas, dan kemudian menggunakan kelas konteks untuk memilih strategi yang sesuai untuk pelaksanaan.

Di bawah ini kami menunjukkan penggunaan corak strategi melalui contoh mudah. Katakan kita mempunyai platform e-dagang dan perlu melaksanakan sistem pembayaran. Sistem pembayaran ini perlu menyokong berbilang kaedah pembayaran, seperti Alipay, WeChat Pay, dsb. Kita boleh menggunakan corak strategi untuk mencapai fungsi ini.

Pertama, kami mentakrifkan antara muka pembayaran:

public interface PaymentStrategy {
    void pay(double amount);
}
Salin selepas log masuk

Kemudian, kami melaksanakan kelas strategi pembayaran khusus:

public class AlipayStrategy implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("Pay " + amount + " RMB via Alipay");
    }
}

public class WechatPayStrategy implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("Pay " + amount + " RMB via Wechat Pay");
    }
}
Salin selepas log masuk

Seterusnya, kami menentukan kelas konteks untuk memilih strategi pembayaran yang sesuai:

public class PaymentContext {
    private PaymentStrategy paymentStrategy;

    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }

    public void pay(double amount) {
        paymentStrategy.pay(amount);
    }
}
Salin selepas log masuk

Akhir sekali, kami boleh menggunakan strategi Corak untuk melaksanakan sistem pembayaran. Sebagai contoh, kita boleh memilih pembayaran Alipay atau pembayaran WeChat.

PaymentContext context = new PaymentContext();

// 使用支付宝支付
context.setPaymentStrategy(new AlipayStrategy());
context.pay(100);

// 使用微信支付
context.setPaymentStrategy(new WechatPayStrategy());
context.pay(200);
Salin selepas log masuk

Hasil keluaran kod di atas ialah:

Pay 100.0 RMB via Alipay
Pay 200.0 RMB via Wechat Pay
Salin selepas log masuk

Dengan menggunakan corak strategi, kami boleh mengasingkan strategi pembayaran daripada kelas konteks, menjadikannya lebih mudah untuk menambah dan mengubah suai strategi pembayaran, meningkatkan kebolehselenggaraan dan keselamatan daripada kod.

Ringkasnya, kedua-dua corak penghias dan corak strategi adalah alat yang berkesan untuk membantu kami membina kod Java yang boleh diselenggara. Corak penghias boleh membantu kami menambah kefungsian pada objek secara dinamik, manakala corak strategi boleh membantu kami memilih algoritma yang sesuai semasa masa jalan. Memahami kelebihan dan senario yang boleh digunakan bagi kedua-dua mod ini, dan menguasai kaedah pelaksanaan khusus mereka, akan membantu kami menulis kod yang lebih boleh diselenggara.

Atas ialah kandungan terperinci Fahami kelebihan dan senario yang boleh digunakan bagi corak penghias dan corak strategi: membina kaedah kod Java yang mudah diselenggara. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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