Corak Gubahan dan Jambatan
Bekerja dengan Gubahan untuk struktur seperti pepohon dan Jambatan untuk memisahkan abstraksi daripada pelaksanaan.
Corak Gubahan dan Jambatan 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.
Komposit: Mengumpulkan Objek
Bayangkan anda sedang membina sistem yang memerlukan objek individu dan kumpulan objek dilayan secara seragam. Di sinilah corak Komposit menyerlah!
Corak ini membolehkan anda menyusun objek ke dalam struktur pepohon untuk mewakili hierarki bahagian-keseluruhan. Dengan cara ini, klien boleh melayan objek individu dan gubahan objek secara seragam.
Komponen, Daun & Komposit
Corak Komposit melibatkan tiga peranan utama:
- Komponen: Antara muka umum atau kelas abstrak untuk objek individu (daun) dan objek komposit.
- Daun: Mewakili objek individu yang tidak mempunyai anak.
- Komposit: Mewakili objek yang boleh mempunyai anak (Komponen lain). Komposit mengurus komponen anak dan mewakilkan operasi kepada komponen tersebut.
Komposit dalam Tindakan: Sistem Fail
Mari kita modelkan sistem fail. File ialah daun, manakala Folder ialah komposit. Kedua-duanya ialah FileSystemComponent.
Cuba jalankan contoh ini:
interface FileSystemComponent {
void display(int indent);
}
class File implements FileSystemComponent {
private String name;
public File(String name) { this.name = name; }
@Override
public void display(int indent) {
System.out.println(" ".repeat(indent) + "File: " + name);
}
}
class Folder implements FileSystemComponent {
private String name;
private java.util.List<FileSystemComponent> children = new java.util.ArrayList<>();
public Folder(String name) { this.name = name; }
public void add(FileSystemComponent component) {
children.add(component);
}
@Override
public void display(int indent) {
System.out.println(" ".repeat(indent) + "Folder: " + name);
for (FileSystemComponent child : children) {
child.display(indent + 1);
}
}
}
public class Main {
public static void main(String[] args) {
File file1 = new File("report.pdf");
File file2 = new File("image.jpg");
Folder documents = new Folder("Documents");
documents.add(file1);
documents.add(file2);
Folder root = new Folder("Root");
root.add(documents);
root.add(new File("README.txt"));
root.display(0);
}
}Membina & Melintasi Pepohon
Dalam contoh ini, FileSystemComponent ialah antara muka umum kita. Kedua-dua File (daun) dan Folder (komposit) melaksanakannya.
Folder boleh mengandungi FileSystemComponent lain, lalu membolehkan kita membina struktur hierarki. Kaedah display berfungsi secara seragam sama ada untuk fail atau folder!
Mengapa Menggunakan Komposit?
Corak Komposit menawarkan beberapa kelebihan:
- Kesederhanaan klien: Klien tidak perlu membezakan antara objek individu dan kumpulan objek ketika melaksanakan operasi.
- Fleksibiliti: Jenis komponen baharu (fail atau folder) boleh ditambah dengan mudah tanpa mengubah kod klien sedia ada.
- Struktur pepohon: Mewakili secara semula jadi hierarki yang objeknya digubah menjadi objek yang lebih besar.
Jambatan: Memisahkan Pengekstrakan
Corak Jambatan membantu anda "menjambatani" jurang antara pengekstrakan dan pelaksanaannya. Corak ini memisahkan kedua-duanya supaya setiap satu boleh berubah secara bebas.
Corak ini berguna apabila terdapat pelbagai cara untuk melaksanakan sesuatu ciri dan anda mahu mengelakkan "ledakan kelas" atau gandingan ketat.
Pengekstrakan, Pelaksana & Lain-lain
Corak Jambatan melibatkan bahagian utama berikut:
- Pengekstrakan: Mentakrifkan antara muka yang menghadap klien. Ia menyimpan rujukan kepada objek
Implementor. - Pengekstrakan Diperhalus: Memanjangkan
Abstractiondan menyediakan variasi. - Pelaksana: Mentakrifkan antara muka untuk kelas pelaksanaan. Antara muka ini tidak semestinya sepadan tepat dengan antara muka
Abstraction. - Pelaksana Konkrit: Melaksanakan antara muka
Implementor.
Jambatan dalam Tindakan: Alat Kawalan Jauh
Mari kita bina alat kawalan jauh yang berfungsi dengan peranti berbeza (TV, Radio). Alat kawalan jauh ialah pengekstrakan, manakala peranti ialah pelaksanaan.
Jalankan kod ini untuk melihat cara kedua-duanya disambungkan:
interface Device {
void powerOn();
void powerOff();
void setChannel(int channel);
}
class Tv implements Device {
@Override
public void powerOn() { System.out.println("TV is ON"); }
@Override
public void powerOff() { System.out.println("TV is OFF"); }
@Override
public void setChannel(int channel) { System.out.println("TV Channel: " + channel); }
}
class Radio implements Device {
@Override
public void powerOn() { System.out.println("Radio is ON"); }
@Override
public void powerOff() { System.out.println("Radio is OFF"); }
@Override
public void setChannel(int channel) { System.out.println("Radio Frequency: " + channel + " MHz"); }
}
abstract class RemoteControl {
protected Device device;
public RemoteControl(Device device) { this.device = device; }
public abstract void togglePower();
public abstract void changeChannel(int channel);
}
class BasicRemote extends RemoteControl {
public BasicRemote(Device device) { super(device); }
@Override
public void togglePower() {
if (device instanceof Tv) { // Simple example for illustration
System.out.print("Basic Remote TV: ");
} else if (device instanceof Radio) {
System.out.print("Basic Remote Radio: ");
}
// In a real scenario, device would have a state
// For simplicity, we just toggle based on a dummy state
device.powerOn(); // or powerOff() based on state
}
@Override
public void changeChannel(int channel) {
System.out.print("Basic Remote: ");
device.setChannel(channel);
}
}
public class Main {
public static void main(String[] args) {
Device tv = new Tv();
RemoteControl basicTvRemote = new BasicRemote(tv);
basicTvRemote.togglePower();
basicTvRemote.changeChannel(7);
System.out.println("---");
Device radio = new Radio();
RemoteControl basicRadioRemote = new BasicRemote(radio);
basicRadioRemote.togglePower();
basicRadioRemote.changeChannel(98);
}
}Menyambungkan Pengekstrakan & Pelaksanaan
Di sini, RemoteControl ialah pengekstrakan kita, manakala Device ialah antara muka pelaksana. Tv dan Radio ialah pelaksanaan konkrit.
Kita boleh menggabungkan mana-mana RemoteControl dengan mana-mana Device. Ini bermakna kita boleh menambah alat kawalan jauh baharu (contohnya, AdvancedRemote) atau peranti baharu (contohnya, Projector) secara berasingan!
Mengapa Menggunakan Jambatan?
Corak Jambatan membawa kelebihan yang ketara:
- Pemisahan: Pengekstrakan dan pelaksanaan boleh dilanjutkan secara berasingan.
- Kerumitan Berkurang: Mengelakkan ledakan kombinasi kelas (contohnya,
BasicTvRemote,AdvancedTvRemote,BasicRadioRemotedan sebagainya). - Fleksibiliti Meningkat: Anda boleh menukar pelaksanaan semasa masa jalan tanpa menjejaskan klien.
Peningkatan Kuasa Corak
Anda sedang mereka bentuk antara muka pengguna grafik yang elemennya boleh berupa butang individu atau panel yang mengandungi butang dan panel lain. Corak reka bentuk manakah yang paling sesuai untuk melayan butang individu dan panel secara seragam?
Rumusan Komposit & Jambatan
Syabas! Anda telah meneroka dua corak struktur yang berkuasa:
- Corak Komposit memudahkan kod klien dengan melayan objek individu dan kumpulan objek secara seragam dalam hierarki.
- Corak Jambatan memisahkan pengekstrakan daripada pelaksanaannya, membolehkan kedua-duanya berkembang secara bebas dan mengurangkan kerumitan.
Corak-corak ini penting untuk membina sistem perisian yang fleksibel dan mudah diselenggara. Teruskan berlatih!
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 Gubahan dan Jambatan” percuma?
Ya — teks penuh “Corak Gubahan dan Jambatan” 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 Gubahan dan Jambatan”?
Bekerja dengan Gubahan untuk struktur seperti pepohon dan Jambatan untuk memisahkan abstraksi daripada pelaksanaan. 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 Gubahan dan Jambatan” 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 Penyesuai dan Penghias
- Corak Fasad dan Proksi
- Corak Gubahan dan Jambatan
- Corak Flyweight untuk Kecekapan Memori