Apakah corak Jambatan?
Corak Jambatan ialah corak reka bentuk struktur. Iaitu, tugas utamanya adalah untuk mencipta struktur kelas dan objek yang lengkap. Bridge menyelesaikan masalah ini dengan membahagikan satu atau lebih kelas kepada hierarki yang berasingan - abstraksi dan pelaksanaan . Perubahan dalam fungsi dalam satu hierarki tidak memerlukan perubahan dalam hierarki yang lain. Semuanya kelihatan jelas, tetapi sebenarnya definisi ini kedengaran sangat luas dan tidak menjawab soalan utama: "Apakah corak Jambatan?" Saya fikir ini akan lebih mudah untuk anda fikirkan dalam amalan. Mari segera model contoh klasik untuk corak Jambatan. Kami mempunyai kelas abstrakShape
yang secara amnya menerangkan angka geometri:
-
Shape.java
public abstract class Shape { public abstract void draw(); }
Apabila kami memutuskan untuk menambah bentuk segi tiga dan segi empat tepat, kami akan mewarisi daripada kelas
Shape
: -
Rectangle.java:
public class Rectangle extends Shape { @Override public void draw() { System.out.println("Drawing rectangle"); } }
-
Triangle.java:
public class Triangle extends Shape { @Override public void draw() { System.out.println("Drawing triangle"); } }
draw()
. Untuk mempunyai pelaksanaan kaedah yang berbeza draw()
, kita perlu mencipta kelas untuk setiap bentuk yang sepadan dengan warna. Jika terdapat tiga warna, maka terdapat enam kelas: TriangleBlack
, TriangleGreen
, TriangleRed
, RectangleBlack
, RectangleGreen
dan RectangleRed
. Enam kelas bukanlah perkara yang besar. Tetapi! Jika kita perlu menambah bentuk atau warna baharu, bilangan kelas akan berkembang secara eksponen. Bagaimana untuk keluar dari situasi ini? Menyimpan warna dalam medan dan mencuba pilihan melalui bersyarat bukanlah penyelesaian terbaik. Penyelesaian yang baik adalah dengan memaparkan warna dalam antara muka yang berasingan . Tidak lama kemudian, mari kita buat antara muka Color
dan tiga pelaksanaannya - BlackColor
, GreenColor
dan RedColor
:
-
Color.java:
public interface Color { void fillColor(); }
-
BlackColor.java:
public class BlackColor implements Color { @Override public void fillColor() { System.out.println("Filling in black color"); } }
-
GreenColor.java
public class GreenColor implements Color { @Override public void fillColor() { System.out.println("Filling in green color"); } }
-
RedColor.java
public class RedColor implements Color { @Override public void fillColor() { System.out.println("Filling in red color"); } }
Sekarang mari kita tambah medan jenis
Color
pada kelasShape
- kita akan menerima nilainya dalam pembina. -
Shape.java:
public abstract class Shape { protected Color color; public Shape(Color color) { this.color = color; } public abstract void draw(); }
color
Kami akan menggunakan pembolehubah dalam pelaksanaanShape
. Ini bermakna bentuk kini boleh menggunakan kefungsian antara mukaColor
. -
Rectangle.java
public class Rectangle extends Shape { public Rectangle(Color color) { super(color); } @Override public void draw() { System.out.println("Drawing rectangle"); color.fillColor(); } }
Color color
ialah jambatan yang menghubungkan dua hierarki kelas yang berasingan.
Peranti jambatan: apakah itu abstraksi dan pelaksanaan
Mari kita lihat gambar rajah kelas yang menerangkan corak Jambatan: Di sini anda boleh melihat dua struktur bebas yang boleh diubah suai tanpa menjejaskan fungsi satu sama lain. Dalam kes kami ialah:- Abstraksi - kelas
Shape
; - RefinedAbstraction - kelas
Triangle
,Rectangle
; - Pelaksana - antara muka
Color
; - ConcreteImplementor - kelas
BlackColor
,GreenColor
danRedColor
.
Shape
mewakili Abstraksi - mekanisme untuk mengawal pewarnaan bentuk dalam warna yang berbeza, yang mewakilkan Pelaksanaan kepada antara muka Color
. Kelas Triangle
ialah Rectangle
objek sebenar yang menggunakan mekanisme yang ditawarkan oleh kelas Shape
. BlackColor
, GreenColor
dan RedColor
- pelaksanaan khusus dalam cabang Pelaksanaan. Mereka sering dipanggil platform.
Di manakah corak Jambatan digunakan?
Kelebihan besar menggunakan corak ini ialah anda boleh membuat perubahan pada fungsi kelas dalam satu cawangan tanpa melanggar logik yang lain. Pendekatan ini juga membantu mengurangkan gandingan kelas program. Syarat utama untuk menggunakan corak ialah "ikut arahan": jangan melekatkannya di mana-mana! Sebenarnya, mari kita fikirkan dalam kes yang anda perlukan untuk menggunakan Bridge:-
Sekiranya perlu untuk mengembangkan bilangan entiti dalam dua arah (bentuk geometri, warna).
-
Jika anda ingin membahagikan kelas besar yang tidak memenuhi prinsip tanggungjawab Tunggal kepada kelas yang lebih kecil dengan fungsi profil sempit.
-
Sekiranya terdapat keperluan untuk membuat perubahan kepada logik operasi entiti tertentu semasa program sedang berjalan.
-
Jika perlu, sembunyikan pelaksanaan daripada pelanggan kelas (perpustakaan).
Kebaikan dan keburukan corak
Seperti corak lain, Jambatan mempunyai kelebihan dan kekurangan. Faedah Jambatan:- Meningkatkan kebolehskalaan kod - anda boleh menambah kefungsian tanpa rasa takut memecahkan sesuatu dalam bahagian lain program.
- Mengurangkan bilangan subkelas - berfungsi apabila perlu untuk mengembangkan bilangan entiti dalam dua arah (contohnya, bilangan bentuk dan bilangan warna).
- Memungkinkan untuk bekerja secara berasingan pada dua cabang bebas Abstraksi dan Pelaksanaan - ini boleh dilakukan oleh dua pembangun berbeza tanpa menyelidiki butiran kod satu sama lain.
- Mengurangkan gandingan kelas - satu-satunya tempat di mana dua kelas disambungkan ialah jambatan (field
Color color
).
- Bergantung pada situasi khusus dan struktur projek secara keseluruhan, mungkin terdapat kesan negatif terhadap produktiviti program (contohnya, jika lebih banyak objek perlu dimulakan).
- Menyukarkan kebolehbacaan kod kerana keperluan untuk menavigasi antara kelas.
GO TO FULL VERSION