JavaRush /Blog Jawa /Random-JV /Pola Desain Jembatan

Pola Desain Jembatan

Diterbitake ing grup
Hello! Kita terus ngerti topik sing wiyar lan migunani banget - pola desain. Dina iki kita bakal ngomong babagan Bridge. Kaya pola liyane, Bridge serves kanggo ngatasi masalah umum sing diadhepi pangembang nalika ngrancang arsitektur piranti lunak. Ayo sinau fitur-fitur kasebut saiki lan goleki carane nggunakake.

Apa pola Bridge?

Pola jembatan minangka pola desain struktural. Yaiku, tugas utamane yaiku nggawe struktur lengkap kelas lan obyek. Bridge ngrampungake masalah iki kanthi misahake siji utawa luwih kelas dadi hierarki sing kapisah - abstraksi lan implementasine . Owah-owahan fungsi ing siji hirarki ora mbutuhake owah-owahan ing liyane. Kabeh katon cetha, nanging nyatane definisi iki muni banget lan ora njawab pitakonan utama: "Apa pola Bridge?" Aku iki bakal luwih gampang kanggo sampeyan ngerti ing laku. Ayo langsung model conto klasik kanggo pola Bridge. Kita duwe kelas abstrak Shapesing umume nggambarake tokoh geometris:
  • Wangun.Jawa

    public abstract class Shape {
       public abstract void draw();
    }

    Nalika kita mutusake kanggo nambah wangun segi telu lan persegi dowo, kita bakal oleh warisan saka 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");
       }
    }
Kabeh katon prasaja nganti kita ngenalake konsep "werna". Yaiku, saben tokoh bakal duwe warna dhewe, sing gumantung saka fungsi metode kasebut draw(). Kanggo duwe implementasine beda saka cara draw(), kita kudu nggawe kelas kanggo saben wangun sing cocog karo werna. Yen ana telung werna, banjur ana enem kelas: TriangleBlack, TriangleGreen, TriangleRed, RectangleBlack, RectangleGreenlan RectangleRed. Enem kelas ora dadi gedhe. Nanging! Yen kita kudu nambah wangun utawa werna anyar, jumlah kelas bakal tuwuh kanthi eksponensial. Carane metu saka kahanan iki? Nyimpen warna ing lapangan lan nyoba opsi liwat kondisional dudu solusi sing paling apik. Solusi sing apik yaiku nampilake warna ing antarmuka sing kapisah . Ora let suwe, ayo nggawe antarmuka Colorlan telung implementasine - BlackColor, GreenColorlan 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 ayo nambah lapangan jinis Colormenyang kelas Shape- kita bakal nampa nilai kasebut ing konstruktor.

  • Shape.java:

    public abstract class Shape {
       protected Color color;
    
       public Shape(Color color) {
           this.color = color;
       }
    
       public abstract void draw();
    }

    colorKita bakal nggunakake variabel ing implementasine Shape. Iki tegese wangun saiki bisa nggunakake fungsi antarmuka Color.

  • 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();
       }
    }
Kene sampeyan! Saiki kita bisa ngasilake macem-macem warna lan wangun geometris sanajan ad infinitum, nambah jumlah kelas ing kemajuan aritmetika. Lapangan kasebut Color colorminangka jembatan sing nyambungake rong hirarki kelas sing kapisah.

Piranti jembatan: apa abstraksi lan implementasine

Ayo kang njupuk dipikir ing diagram kelas sing njlèntrèhaké pola Bridge: Pambuka pola desain Jembatan - 2Kene sampeyan bisa ndeleng loro struktur sawijining sing bisa diowahi tanpa mengaruhi fungsi saben liyane. Ing kasus kita yaiku:
  • Abstraksi - kelas Shape;
  • RefinedAbstraction - kelas Triangle,;Rectangle
  • Implementor - antarmuka Color;
  • ConcreteImplementor - kelas BlackColor, GreenColorlan RedColor.
Kelas kasebut Shapenggambarake Abstraksi - mekanisme kanggo ngontrol pewarnaan wujud kanthi warna sing beda-beda, sing utusan Implementasi menyang antarmuka Color. Kelas Triangleminangka Rectangleobyek nyata sing nggunakake mekanisme sing ditawakake kelas kasebut Shape. BlackColor, GreenColorlan RedColor- implementasi khusus ing cabang Implementasi. Padha asring disebut platform.

Ing ngendi pola Bridge digunakake?

Kauntungan gedhe saka nggunakake pola iki yaiku sampeyan bisa ngganti fungsi kelas ing siji cabang tanpa ngilangi logika liyane. Pendekatan iki uga mbantu nyuda kopling kelas program. Kondisi utama kanggo nggunakake pola yaiku "tindakake pandhuane": aja nempel ing endi wae! Bener, ayo ngerteni ing kasus apa sampeyan kudu nggunakake Bridge:
  1. Yen perlu kanggo nggedhekake jumlah entitas ing rong arah (wangun geometris, werna).

  2. Yen sampeyan pengin dibagi kelas gedhe sing ora ketemu prinsip tanggung jawab Tunggal menyang kelas cilik karo fungsi sempit-profil.

  3. Yen ana perlu kanggo nggawe owah-owahan ing logika saka operasi entitas tartamtu nalika program lagi mlaku.

  4. Yen perlu, ndhelikake implementasine saka klien kelas (perpustakaan).

Nalika nggunakake pola saben wektu, sampeyan kudu ngelingi sing nambah entitas tambahan kanggo kode - iku ora sakabehe logis kanggo nggunakake ing project ngendi ana mung siji tokoh geometris lan siji utawa loro werna bisa.

Pros lan cons saka pola

Kaya pola liyane, Bridge duwe kaluwihan lan cacat. Keuntungan saka Bridge:
  1. Ngapikake skalabilitas kode - sampeyan bisa nambah fungsi tanpa wedi ngrusak soko ing bagean liyane saka program.
  2. Nyuda jumlah subclasses - dianggo nalika perlu kanggo nggedhekake nomer entitas ing rong arah (contone, nomer wangun lan nomer werna).
  3. Bisa digunakake kanthi kapisah ing rong cabang Abstraksi lan Implementasi independen - iki bisa ditindakake dening rong pangembang sing beda-beda tanpa nyelidiki rincian kode saben liyane.
  4. Ngurangi kopling kelas - siji-sijine papan ing ngendi rong kelas disambungake yaiku jembatan (lapangan Color color).
Kekurangan Bridge:
  1. Gumantung ing kahanan tartamtu lan struktur proyek kanthi sakabehe, bisa uga ana pengaruh negatif ing produktivitas program (contone, yen luwih akeh obyek kudu diinisialisasi).
  2. Complicates maca kode amarga perlu kanggo navigasi antarane kelas.

Bedane saka pola Strategi

Pola Bridge asring bingung karo pola desain liyane, Strategy. Loro-lorone nggunakake komposisi (ing wangun lan werna conto kita digunakake agregasi, nanging pola Bridge uga bisa nggunakake komposisi) dening delegating karya kanggo obyek liyane. Nanging ana prabédan antarane wong-wong mau, lan iku ageng. Pola Strategi minangka pola prilaku: ngrampungake masalah sing beda-beda. Strategy ngidini kanggo interchangeability saka algoritma, nalika Bridge misahake abstraksi saka implementasine kanggo ngidini pilihan antarane implementasine beda. Yaiku, Bridge, ora kaya Strategi, ditrapake kanggo kabeh konstruksi utawa struktur hirarkis. Pola Bridge bisa dadi senjata sing apik ing arsenal pangembang; sing utama yaiku nemokake kahanan sing kudu digunakake, utawa nggunakake pola liyane. Yen sampeyan durung ngerti cithakan liyane, waca materi iki:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION