Rumah > Java > javaTutorial > Memahami Corak Reka Bentuk Strategi di Jawa

Memahami Corak Reka Bentuk Strategi di Jawa

王林
Lepaskan: 2024-07-26 11:20:52
asal
1038 orang telah melayarinya

Understanding the Strategy Design Pattern in Java

Memahami Corak Reka Bentuk Strategi di Jawa

Masalah

Corak Strategi menangani keperluan untuk menentukan keluarga algoritma, merangkum setiap satu dan menjadikannya boleh ditukar ganti. Corak ini membolehkan algoritma berbeza secara bebas daripada pelanggan yang menggunakannya. Ia berguna apabila anda mempunyai pelbagai cara untuk melaksanakan tugas tertentu dan ingin memilih algoritma semasa masa jalan.

Penyelesaian

Corak Strategi melibatkan tiga komponen utama:

  1. Konteks: Objek yang mengandungi rujukan kepada objek strategi dan menggunakannya untuk melaksanakan algoritma.
  2. Strategi: Antara muka biasa untuk semua algoritma yang disokong. Konteks menggunakan antara muka ini untuk memanggil algoritma yang ditakrifkan oleh strategi konkrit.
  3. Strategi Konkrit: Kelas yang melaksanakan antara muka strategi, menyediakan algoritma khusus.

Konteks mewakilkan pelaksanaan algoritma kepada objek strategi, yang membolehkan algoritma dipilih pada masa jalan.

Kebaikan dan Keburukan

Kebaikan

  • Pengenkapsulan Algoritma: Setiap algoritma dirangkumkan dalam kelasnya sendiri, menjadikannya mudah untuk bertukar antara mereka dan menambah algoritma baharu tanpa mengubah konteks.
  • Prinsip Tanggungjawab Tunggal: Kelas konteks dipermudahkan kerana ia mewakilkan pelaksanaan algoritma kepada kelas strategi.
  • Prinsip Terbuka/Tertutup: Strategi baharu boleh diperkenalkan tanpa mengubah konteks atau kelas strategi sedia ada.

Kontra

  • Peningkatan Bilangan Kelas: Corak meningkatkan bilangan kelas dalam pangkalan kod disebabkan penciptaan kelas strategi baharu untuk setiap algoritma.
  • Kerumitan dalam Strategi Penukaran: Jika tidak diurus dengan baik, menukar strategi secara dinamik pada masa jalan boleh memperkenalkan kerumitan dan kemungkinan ralat.

Contoh Aplikasi Dunia Sebenar

Contoh praktikal corak Strategi adalah dalam sistem pemprosesan pembayaran yang kaedah pembayaran yang berbeza (cth., kad kredit, PayPal, pindahan bank) dilaksanakan sebagai strategi yang berbeza. Pelanggan boleh memilih strategi pembayaran yang sesuai semasa masa jalan.

Contoh Kod dalam Java

Corak strategi dalam kod:

java
// Strategy Interface
public interface PaymentStrategy {
    void pay(int amount);
}

// Concrete Strategy 1
public class CreditCardPayment implements PaymentStrategy {
    private String cardNumber;

    public CreditCardPayment(String cardNumber) {
        this.cardNumber = cardNumber;
    }

    @Override
    public void pay(int amount) {
        System.out.println(amount + " paid with credit card " + cardNumber);
    }
}

// Concrete Strategy 2
public class PayPalPayment implements PaymentStrategy {
    private String email;

    public PayPalPayment(String email) {
        this.email = email;
    }

    @Override
    public void pay(int amount) {
        System.out.println(amount + " paid using PayPal account " + email);
    }
}

// Context
public class ShoppingCart {
    private PaymentStrategy paymentStrategy;

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

    public void checkout(int amount) {
        paymentStrategy.pay(amount);
    }
}

// Client code
public class Client {
    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCart();

        cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9876-5432"));
        cart.checkout(100);

        cart.setPaymentStrategy(new PayPalPayment("user@example.com"));
        cart.checkout(200);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Memahami Corak Reka Bentuk Strategi di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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