Apa pola jembatan?
Pola jembatan minangka pola desain struktural. Kanthi tembung liyane, tugas utamane yaiku nggawe struktur lengkap saka kelas lan obyek. Jembatan nindakake iki kanthi mbagi siji utawa luwih kelas dadi hierarki sing kapisah: abstraksi lan implementasine . Owah-owahan fungsi ing siji hirarki ora mbutuhake owah-owahan ing liyane. Iku kabeh apik lan apik, nanging definisi iki jembar banget lan ora njawab pitakonan sing paling penting: "Apa pola jembatan?" Aku bakal luwih gampang sampeyan ngerti aplikasi praktis. Dadi langsung, ayo nggawe skenario klasik kanggo pola jembatan. Kita duweShape
kelas abstrak, sing nggambarake tokoh geometris umum:
-
Wangun.Jawa
public abstract class Shape { public abstract void draw(); }
Nalika kita mutusake kanggo nambah wangun kaya segitiga lan persegi dowo, kita bakal nggawe wong warisan
Shape
kelas: -
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()
cara bakal gumantung ing werna iki. Kanggo duwe implementasine beda saka draw()
cara, banjur kita kudu nggawe kelas kanggo saben kombinasi wangun-werna. Yen kita duwe telung werna, banjur kita kudu enem kelas: TriangleBlack
, TriangleGreen
, TriangleRed
, RectangleBlack
, RectangleGreen
lan RectangleRed
. Enem kelas ora dadi masalah gedhe. Nanging! Yen kita kudu nambah wangun utawa werna anyar, banjur nomer kelas tuwuh exponentially. Carane metu saka kahanan iki? Nyimpen warna ing lapangan lan enumerasi kabeh opsi nggunakake pernyataan kondisional dudu solusi sing paling apik. Solusi sing apik yaiku mindhah warna menyang antarmuka sing kapisah. Ora suwe ngandika rampung: ayo nggawe Color
antarmuka kanthi telung implementasine: BlackColor
, GreenColor
lan RedColor
:
-
Warna.Jawa:
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"); } }
Saiki kita nambah
Color
lapangan menyangShape
kelas. Kita bakal entuk regane ing konstruktor. -
Shape.java:
public abstract class Shape { protected Color color; public Shape(Color color) { this.color = color; } public abstract void draw(); }
Kita bakal nggunakake
color
variabel ingShape
implementasine. Iki tegese wangun saiki bisa nggunakake fungsi antarmukaColor
. -
Persegi panjang.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
minangka jembatan sing nyambungake rong hirarki kelas sing kapisah.
Carane mbangun jembatan: abstraksi lan implementasine
Ayo kang katon ing diagram kelas sing nggambarake pola jembatan:
- Abstraksi yaiku
Shape
kelas - RefinedAbstraction yaiku
Triangle
lanRectangle
kelas - Implementor minangka
Color
antarmuka - ConcreteImplementor yaiku
BlackColor
,GreenColor
lanRedColor
kelas.
Shape
minangka abstraksi - mekanisme kanggo ngatur ngisi wangun kanthi macem-macem warna, sing utusan menyang antarmuka Color
(Implementor). Kelas Triangle
lan Rectangle
minangka kelas konkrit sing nggunakake mekanisme sing kasedhiya ing Shape
kelas kasebut. BlackColor
, GreenColor
lan RedColor
minangka implementasi konkrit ing hierarki Implementasi.
Ngendi nggunakake pola jembatan
Kauntungan gedhe saka nggunakake pola iki yaiku sampeyan bisa ngganti kelas fungsional ing siji hierarki tanpa ngrusak logika liyane. Uga, pendekatan iki mbantu nyuda kopling antarane kelas. Syarat utama nalika nggunakake pola iki yaiku "tindakake pandhuane" - aja nglirwakake apa wae! Kanggo tujuan kasebut, ayo goleki kahanan nalika sampeyan kudu nggunakake pola jembatan:-
Yen sampeyan perlu kanggo nggedhekake nomer èntitas adhedhasar kombinasi saka rong konsep (eg wangun lan werna).
-
Yen sampeyan pengin mbagi kelas gedhe sing ora cocog karo prinsip tanggung jawab siji dadi kelas sing luwih cilik sing nduweni fungsi sing sempit.
-
Yen perlu kanggo ngganti logika entitas tartamtu nalika program lagi mlaku.
-
Yen perlu kanggo ndhelikake implementasine saka klien saka kelas utawa perpustakaan.
Pros lan cons saka pola
Kaya pola liyane, jembatan duwe kaluwihan lan kekurangan. Kaluwihan saka pola jembatan:- Iku mbenakake skalabilitas kode - sampeyan bisa nambah fungsi tanpa wedi bejat soko ing bagean liyane saka program.
- Ngurangi jumlah subkelas nalika jumlah entitas bakal adhedhasar kombinasi saka rong konsep (contone, wangun lan werna).
- Iku ndadekake iku bisa kanggo kapisah bisa ing loro hirarki kapisah - Abstraksi lan Implementasine. Rong pangembang sing beda bisa nggawe owah-owahan tanpa ngerteni rincian kode siji-sijine.
- Iku nyuda kopling antarane kelas - siji-sijine papan ing ngendi rong kelas digandhengake yaiku jembatan (yaiku
Color color
lapangan).
- Gumantung ing kahanan tartamtu lan struktur sakabèhé saka project, iku bisa impact negatif ing kinerja program (contone, yen sampeyan kudu initialize liyane obyek).
- Iki ndadekake kode kurang bisa diwaca amarga kudu ngalih ing antarane rong kelas kasebut.
GO TO FULL VERSION