Corak Kaedah Templat dan Keadaan
Takrifkan rangka algoritma dengan Kaedah Templat dan benarkan objek mengubah tingkah laku dengan Keadaan.
Corak Kaedah Templat dan Keadaan ialah pelajaran Seni Bina Bersih & Corak Reka Bentuk dalam Amalan percuma di CoddyKit. Ini ialah pelajaran 3 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.
Fokus Corak Tingkah Laku
Selamat kembali! Dalam pelajaran ini, kita akan mendalami dua corak reka bentuk tingkah laku yang berkuasa: Kaedah Templat dan corak Keadaan.
Corak-corak ini membantu mengurus algoritma dan tingkah laku objek secara fleksibel, sekali gus menjadikan kod anda lebih mudah dikembangkan dan diselenggara.
Apakah Kaedah Templat?
Corak Kaedah Templat mentakrifkan rangka algoritma dalam suatu operasi, sambil menangguhkan sesetengah langkah kepada subkelas.
Corak ini membolehkan subkelas mentakrifkan semula langkah tertentu dalam algoritma tanpa mengubah struktur keseluruhan algoritma.
Rangka Algoritma
Bayangkan resipi dengan langkah yang tetap, tetapi sesetengah bahan atau masa memasak boleh berubah. Cara asas pelaksanaannya telah ditetapkan, tetapi perinciannya fleksibel.
- kelas abstrak mentakrifkan algoritma keseluruhan dengan "kaedah templat" akhir.
- Kaedah ini memanggil siri operasi primitif (kaedah abstrak) yang mesti dilaksanakan oleh subkelas.
- Kaedah ini juga boleh merangkumi kaedah konkrit (langkah yang dikongsi) dan kaedah cangkuk (langkah pilihan).
Kaedah Templat dalam Tindakan
Mari kita pertimbangkan penyediaan minuman. Kopi dan teh kedua-duanya memerlukan air dididihkan dan dituangkan ke dalam cawan. Namun, proses membancuh dan penambahan perasa adalah berbeza.
Kaedah Templat membolehkan kita mentakrifkan langkah yang sama sekali sahaja, sambil membenarkan kelas minuman tertentu menyesuaikan langkah uniknya.
Contoh Pembuat Minuman
Berikut ialah cara kita boleh melaksanakan BeverageMaker generik menggunakan Kaedah Templat. Perhatikan bahawa kaedah prepareBeverage() adalah muktamad, lalu menetapkan algoritma tersebut.
public abstract class BeverageMaker {
// The template method - defines the algorithm's skeleton
public final void prepareBeverage() {
boilWater();
brew();
pourInCup();
addCondiments();
}
// Common steps
private void boilWater() {
System.out.println("Boiling water");
}
private void pourInCup() {
System.out.println("Pouring into cup");
}
// Abstract steps - must be implemented by subclasses
protected abstract void brew();
protected abstract void addCondiments();
}
public class CoffeeMaker extends BeverageMaker {
@Override
protected void brew() {
System.out.println("Dripping coffee through filter");
}
@Override
protected void addCondiments() {
System.out.println("Adding sugar and milk");
}
}
public class TeaMaker extends BeverageMaker {
@Override
protected void brew() {
System.out.println("Steeping the tea bag");
}
@Override
protected void addCondiments() {
System.out.println("Adding lemon");
}
}
public class Main {
public static void main(String[] args) {
System.out.println("--- Making Coffee ---");
BeverageMaker coffee = new CoffeeMaker();
coffee.prepareBeverage();
System.out.println("\n--- Making Tea ---");
BeverageMaker tea = new TeaMaker();
tea.prepareBeverage();
}
}Apakah Corak Keadaan?
Corak Keadaan membolehkan objek mengubah tingkah lakunya apabila keadaan dalamannya berubah. Keadaan ini seolah-olah objek tersebut telah menukar kelasnya.
Daripada menggunakan banyak pernyataan if/else atau switch, anda merangkum tingkah laku setiap keadaan dalam kelas yang berasingan.
Konteks dan Keadaan
Fikirkan lampu isyarat. Tingkah lakunya (lampu yang aktif) berubah berdasarkan keadaan semasanya (Merah, Kuning, Hijau).
- Kelas Konteks menyimpan rujukan kepada objek Keadaan dan mewakilkan tingkah laku khusus keadaan kepadanya.
- Antara Muka Keadaan mengisytiharkan kaedah untuk tingkah laku khusus keadaan.
- Kelas Keadaan Konkrit melaksanakan Antara Muka Keadaan dengan menyediakan tingkah laku untuk keadaan tertentu.
Keadaan Lampu Isyarat
Objek TrafficLight tidak mempunyai logik yang kompleks. Sebaliknya, objek ini menyimpan rujukan kepada LightState semasanya (contohnya, RedLightState, GreenLightState).
Apabila peristiwa berlaku (seperti detik pemasa), TrafficLight mewakilkan tindakan kepada objek LightState semasanya, yang kemudiannya mengendalikan peralihan ke keadaan seterusnya.
Simulasi Lampu Isyarat
Berikut ialah simulasi lampu isyarat ringkas yang menggunakan corak Keadaan. Konteks TrafficLight mengubah objek LightState dalamannya, yang menentukan tingkah lakunya.
// State Interface
interface LightState {
void handleRequest(TrafficLight light);
String getStateName();
}
// Concrete State: Red Light
class RedLightState implements LightState {
@Override
public void handleRequest(TrafficLight light) {
System.out.println("Red light: STOP!");
light.setState(new GreenLightState()); // Transition to Green
}
@Override
public String getStateName() {
return "Red";
}
}
// Concrete State: Green Light
class GreenLightState implements LightState {
@Override
public void handleRequest(TrafficLight light) {
System.out.println("Green light: GO!");
light.setState(new YellowLightState()); // Transition to Yellow
}
@Override
public String getStateName() {
return "Green";
}
}
// Concrete State: Yellow Light
class YellowLightState implements LightState {
@Override
public void handleRequest(TrafficLight light) {
System.out.println("Yellow light: CAUTION!");
light.setState(new RedLightState()); // Transition to Red
}
@Override
public String getStateName() {
return "Yellow";
}
}
// Context
class TrafficLight {
private LightState currentState;
public TrafficLight() {
// Initial state
this.currentState = new RedLightState();
}
public void setState(LightState state) {
this.currentState = state;
}
public void change() {
System.out.print("Current state: " + currentState.getStateName() + " -> ");
currentState.handleRequest(this);
}
}
public class Main {
public static void main(String[] args) {
TrafficLight light = new TrafficLight();
// Simulate light changes
light.change(); // Red -> Green
light.change(); // Green -> Yellow
light.change(); // Yellow -> Red
light.change(); // Red -> Green
}
}Pengenalpastian Corak
Anda sedang mereka bentuk sistem pemprosesan dokumen yang mempunyai jenis dokumen berbeza (PDF, DOCX, TXT) yang berkongsi proses penukaran kepada HTML, tetapi setiap jenis mempunyai langkah unik untuk menghuraikan kandungannya.
Apakah corak reka bentuk yang paling sesuai untuk mentakrifkan keseluruhan proses penukaran sambil membenarkan langkah penghuraian tertentu berubah?
Ringkasan Corak
Syabas! Anda telah mempelajari dua corak tingkah laku yang berkuasa:
- Corak Kaedah Templat membolehkan anda mentakrifkan struktur algoritma yang tetap sambil membenarkan subkelas melaksanakan langkah tertentu.
- Corak Keadaan membolehkan objek mengubah tingkah lakunya berdasarkan keadaan dalaman, dengan merangkum logik khusus keadaan dalam kelas yang berasingan.
Corak-corak ini meningkatkan fleksibiliti dan kebolehselenggaraan reka bentuk anda!
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 Kaedah Templat dan Keadaan” percuma?
Ya — teks penuh “Corak Kaedah Templat dan Keadaan” 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 Kaedah Templat dan Keadaan”?
Takrifkan rangka algoritma dengan Kaedah Templat dan benarkan objek mengubah tingkah laku dengan Keadaan. 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 3 daripada 4.
Berapa lamakah pelajaran “Corak Kaedah Templat dan Keadaan” 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