mod jambatan
Bridge digunakan untuk memisahkan abstraksi dan pelaksanaan supaya kedua-duanya boleh berubah secara bebas. Corak reka bentuk jenis ini ialah corak struktur, yang memisahkan abstraksi dan pelaksanaan dengan menyediakan struktur penyambung antara mereka.
Corak ini melibatkan antara muka yang bertindak sebagai jambatan, menjadikan kefungsian kelas entiti bebas daripada kelas pelaksanaan antara muka. Kedua-dua jenis kelas boleh diubah secara struktur tanpa menjejaskan satu sama lain.
Kami menunjukkan penggunaan Corak Jambatan melalui contoh berikut. Antaranya, anda boleh menggunakan kaedah kelas abstrak yang sama tetapi kelas pelaksanaan jambatan yang berbeza untuk melukis bulatan dengan warna yang berbeza.
Pengenalan
Niat: Asingkan bahagian abstrak daripada bahagian pelaksanaan supaya ia boleh berubah secara bebas.
Penyelesaian utama: Dalam situasi di mana terdapat banyak kemungkinan perubahan, penggunaan warisan akan menyebabkan masalah letupan kelas dan menjadikan pengembangan tidak fleksibel.
Bila hendak digunakan: Sistem pelaksanaan mungkin mempunyai pelbagai klasifikasi sudut dan setiap sudut mungkin berubah.
Cara menyelesaikan: Asingkan klasifikasi berbilang sudut ini, biarkan ia berubah secara bebas dan kurangkan gandingan antaranya.
Kod utama: Kelas abstrak bergantung pada kelas pelaksanaan.
Contoh aplikasi: 1. Zhu Bajie dijelmakan semula daripada Marshal Tianpeng kepada babi Mekanisme penjelmaan semula membahagikan dunia kepada dua peringkat, iaitu: jiwa dan badan abstraksi , yang terakhir adalah bersamaan dengan realisasi. Melalui delegasi fungsi, makhluk hidup memanggil fungsi objek fizikal, membolehkan makhluk hidup membuat pilihan dinamik. 2. Untuk suis pada dinding, suis yang anda boleh lihat adalah abstrak, dan anda tidak perlu risau tentang cara ia dilaksanakan secara terperinci.
Kelebihan: 1. 2. Keupayaan pengembangan yang sangat baik. 3. Jadikan butiran pelaksanaan telus kepada pelanggan.
Kelemahan: Pengenalan mod jambatan akan meningkatkan kesukaran pemahaman dan reka bentuk sistem Memandangkan perhubungan pengagregatan diwujudkan pada lapisan pengabstrakan, pembangun dikehendaki mereka bentuk dan memprogramkan untuk pengabstrakan .
Senario penggunaan: 1 Jika sistem perlu menambah lebih fleksibiliti antara peranan abstrak dan peranan konkrit komponen, elakkan daripada mewujudkan hubungan statik antara kedua-dua peringkat Hubungan warisan, melalui mod jambatan, mereka boleh mewujudkan hubungan perkaitan pada lapisan abstrak. 2. Mod jambatan amat sesuai untuk sistem yang tidak mahu menggunakan warisan atau di mana bilangan kelas sistem meningkat secara mendadak disebabkan oleh warisan berbilang peringkat. 3. Kelas mempunyai dua dimensi yang berubah secara bebas, dan kedua-dua dimensi perlu dikembangkan.
Nota: Untuk dua dimensi yang berubah secara bebas, menggunakan mod jambatan adalah sempurna.
Pelaksanaan
Kami mempunyai antara muka DrawAPI yang dilaksanakan sebagai jambatan dan kelas entiti RedCircle yang melaksanakan antara muka DrawAPI . Bulatan Hijau. Shape ialah kelas abstrak yang akan menggunakan objek DrawAPI. BridgePatternDemo, kelas demo kami menggunakan kelas Shape untuk melukis bulatan dengan warna yang berbeza.
Langkah 1
Buat antara muka pelaksanaan jambatan.
DrawAPI.java
public interface DrawAPI { public void drawCircle(int radius, int x, int y); }
Langkah 2
Buat kelas pelaksanaan jambatan entiti yang melaksanakan antara muka DrawAPI.
RedCircle.java
public class RedCircle implements DrawAPI { @Override public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: red, radius: " + radius +", x: " +x+", "+ y +"]"); } }
GreenCircle.java
public class GreenCircle implements DrawAPI { @Override public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: green, radius: " + radius +", x: " +x+", "+ y +"]"); } }
Langkah 3
Gunakan <🎜 Antara muka DrawAPI mencipta kelas abstrak Bentuk.
Shape.java
public abstract class Shape { protected DrawAPI drawAPI; protected Shape(DrawAPI drawAPI){ this.drawAPI = drawAPI; } public abstract void draw(); }Langkah 4Buat kelas entiti yang melaksanakan antara muka
Shape.
Circle.java
public class Circle extends Shape { private int x, y, radius; public Circle(int x, int y, int radius, DrawAPI drawAPI) { super(drawAPI); this.x = x; this.y = y; this.radius = radius; } public void draw() { drawAPI.drawCircle(radius,x,y); } }Langkah 5Gunakan kelas
Shape dan DrawAPI untuk melukis bulatan Warna yang berbeza.
BridgePatternDemo.java
public class BridgePatternDemo { public static void main(String[] args) { Shape redCircle = new Circle(100,100, 10, new RedCircle()); Shape greenCircle = new Circle(100,100, 10, new GreenCircle()); redCircle.draw(); greenCircle.draw(); } }Langkah 6Sahkan output.
Drawing Circle[ color: red, radius: 10, x: 100, 100] Drawing Circle[ color: green, radius: 10, x: 100, 100]