Corak Pemerhati dan Strategi
Laksanakan Pemerhati untuk pengurusan kebergantungan dan Strategi untuk algoritma yang boleh ditukar ganti.
Corak Pemerhati dan Strategi ialah pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Seni Bina Bersih & Corak Reka Bentuk dalam Amalan merangkumi sejumlah 4 pelajaran.
Corak Tingkah Laku: Tindakan & Interaksi
Selamat datang ke dunia Corak Reka Bentuk Tingkah Laku! Corak ini memfokuskan cara objek berinteraksi dan berkomunikasi, sekali gus membantu mengagihkan tanggungjawab dengan berkesan.
Corak ini menerangkan pola komunikasi lazim antara objek, menjadikan sistem anda lebih fleksibel dan mudah diurus.
Corak Pemerhati: Memaklumkan Perubahan
Yang pertama ialah Corak Pemerhati. Bayangkan anda melanggan surat berita — apabila edisi baharu diterbitkan, anda menerima pemberitahuan! Corak ini berfungsi dengan cara yang sama.
- Corak ini mentakrifkan kebergantungan satu kepada banyak antara objek.
- Apabila satu objek (Subjek) berubah keadaan, semua objek bergantung padanya (Pemerhati) akan dimaklumkan dan dikemas kini secara automatik.
Corak ini amat sesuai untuk pengendalian peristiwa dan sistem teragih.
Komponen Pemerhati: Subjek
Subjek (juga dikenali sebagai Observable) ialah objek yang diperhatikan. Subjek mempunyai dua tugas utama:
- Menyelenggara senarai pemerhatinya.
- Menyediakan kaedah untuk melampirkan (menambah) atau menanggalkan (mengalih keluar) pemerhati.
- Memaklumkan semua pemerhati yang dilampirkan apabila keadaannya berubah.
Anggaplah ia sebagai penerbit berita.
Komponen Pemerhati: Pemerhati
Pemerhati ialah mana-mana objek yang mahu dimaklumkan tentang perubahan pada Subjek. Pemerhati mentakrifkan kaedah update().
- Apabila Subjek memberikan pemberitahuan, Subjek memanggil kaedah
update()setiap Pemerhati. - Kaedah ini membolehkan Pemerhati bertindak balas terhadap perubahan, mungkin dengan mendapatkan data baharu atau mengemas kini paparannya.
Inilah pelanggan surat berita anda!
Corak Pemerhati: Penerbit & Pelanggan
Mari kita lihat corak Pemerhati dalam tindakan menggunakan penerbit dan pembaca berita yang ringkas. NewsPublisher ialah Subjek kita, manakala NewsReader ialah Pemerhati kita.
Cuba jalankan kod ini untuk melihat cara pembaca menerima kemas kini!
import java.util.ArrayList;
import java.util.List;
// Observer Interface
interface Subscriber {
void update(String news);
}
// Subject Class
class NewsPublisher {
private List<Subscriber> subscribers = new ArrayList<>();
private String latestNews;
public void addSubscriber(Subscriber s) {
subscribers.add(s);
}
public void removeSubscriber(Subscriber s) {
subscribers.remove(s);
}
public void publishNews(String news) {
this.latestNews = news;
notifySubscribers();
}
private void notifySubscribers() {
for (Subscriber s : subscribers) {
s.update(latestNews);
}
}
}
// Concrete Observer
class NewsReader implements Subscriber {
private String name;
public NewsReader(String name) {
this.name = name;
}
@Override
public void update(String news) {
System.out.println(name + " received: " + news);
}
}
public class Main {
public static void main(String[] args) {
NewsPublisher publisher = new NewsPublisher();
NewsReader reader1 = new NewsReader("Alice");
NewsReader reader2 = new NewsReader("Bob");
publisher.addSubscriber(reader1);
publisher.addSubscriber(reader2);
publisher.publishNews("Breaking: New programming course released!");
System.out.println("\nAlice unsubscribes...");
publisher.removeSubscriber(reader1);
publisher.publishNews("Update: Course enrollment extended!");
}
}Corak Strategi: Memilih Algoritma
Seterusnya, kita mempunyai Corak Strategi. Corak ini membolehkan anda mentakrifkan keluarga algoritma, merangkum setiap satunya dan menjadikannya boleh ditukar ganti.
Corak ini membolehkan algoritma berubah secara bebas daripada klien yang menggunakannya. Fikirkan tentang memilih kaedah pembayaran yang berbeza (kad kredit, PayPal, pindahan bank) semasa membuat pembayaran.
Komponen Strategi: Strategi
Strategi ialah antara muka atau kelas abstrak yang mengisytiharkan operasi umum untuk semua algoritma yang disokong.
- Setiap algoritma khusus (contohnya,
CreditCardPayment,PayPalPayment) melaksanakan antara muka ini. - Hal ini memastikan semuanya mempunyai tandatangan kaedah yang sama, lalu membolehkannya saling menggantikan.
Komponen Strategi: Konteks
Konteks ialah kelas yang menyimpan rujukan kepada objek Strategi. Kelas ini mentakrifkan antara muka untuk digunakan oleh klien.
- Konteks tidak mengetahui strategi khusus yang sedang digunakannya.
- Konteks mewakilkan pelaksanaan algoritma kepada objek Strategi semasanya.
Hal ini menjadikan Konteks ringkas dan fleksibel kerana ia tidak perlu diubah apabila strategi baharu ditambahkan.
Corak Strategi: Kaedah Pembayaran
Berikut ialah contoh praktikal corak Strategi. Kita mempunyai strategi pembayaran yang berbeza (kad kredit, PayPal) dan ShoppingCart sebagai Konteks kita.
Perhatikan bahawa ShoppingCart boleh bertukar antara kaedah pembayaran dengan mudah tanpa mengubah logik terasnya.
interface PaymentStrategy {
void pay(int amount);
}
class CreditCardPayment implements PaymentStrategy {
private String cardNumber;
public CreditCardPayment(String card) { this.cardNumber = card; }
@Override
public void pay(int amount) {
System.out.println("Paid " + amount + " using Credit Card " + cardNumber);
}
}
class PayPalPayment implements PaymentStrategy {
private String email;
public PayPalPayment(String email) { this.email = email; }
@Override
public void pay(int amount) {
System.out.println("Paid " + amount + " using PayPal account: " + email);
}
}
class ShoppingCart {
private PaymentStrategy strategy;
public void setPaymentStrategy(PaymentStrategy strategy) {
this.strategy = strategy;
}
public void checkout(int amount) {
if (strategy == null) {
System.out.println("Please set a payment strategy first.");
return;
}
strategy.pay(amount);
}
}
public class Main {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
// Pay with Credit Card
cart.setPaymentStrategy(new CreditCardPayment("1234-5678-9012-3456"));
cart.checkout(100);
// Pay with PayPal
cart.setPaymentStrategy(new PayPalPayment("user@example.com"));
cart.checkout(50);
}
}Semakan Pantas: Pemerhati atau Strategi?
Pertimbangkan aplikasi perdagangan saham. Aplikasi ini perlu mengira yuran perdagangan menggunakan kaedah yang berbeza (contohnya, yuran tetap, peratusan daripada nilai dagangan atau sistem berperingkat) berdasarkan jenis akaun pengguna. Aplikasi tersebut sepatutnya boleh bertukar antara kaedah ini dengan mudah.
Imbas Kembali: Memaklumkan & Menukar
Syabas! Anda telah meneroka dua corak reka bentuk tingkah laku yang berkuasa:
- Corak Pemerhati: Mengurus kebergantungan satu kepada banyak, apabila Subjek memaklumkan perubahan keadaan kepada berbilang Pemerhati. Corak ini menggalakkan gandingan longgar antara komponen.
- Corak Strategi: Membolehkan anda mentakrifkan sekumpulan algoritma, merangkum setiap satunya dan menjadikannya boleh saling menggantikan. Corak ini membantu menukar algoritma semasa masa jalan, sekali gus menggalakkan fleksibiliti dan kod yang kemas.
Corak-corak ini membantu menjadikan kod anda lebih modular, fleksibel dan mudah diselenggara!
Pelajari Seni Bina Bersih & Corak Reka Bentuk dalam Amalan dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Corak Pemerhati dan Strategi” percuma?
Ya — teks penuh “Corak Pemerhati dan Strategi” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Seni Bina Bersih & Corak Reka Bentuk dalam Amalan, tingkat taraf kepada CoddyKit PRO. Kursus Seni Bina Bersih & Corak Reka Bentuk dalam Amalan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Corak Pemerhati dan Strategi”?
Laksanakan Pemerhati untuk pengurusan kebergantungan dan Strategi untuk algoritma yang boleh ditukar ganti. Anda berlatih Seni Bina Bersih & Corak Reka Bentuk dalam Amalan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Seni Bina Bersih & Corak Reka Bentuk dalam Amalan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Corak Pemerhati dan Strategi” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan ini?
Ya. Setiap pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Corak Pemerhati dan Strategi
- Corak Perintah dan Lelaran
- Corak Kaedah Templat dan Keadaan
- Mediator dan Rantaian Tanggungjawab