Latest web development tutorials

Bridge mode

Bridge (jembatan) digunakan untuk mencapai decoupling dan abstraksi, sehingga dua dapat bervariasi secara independen. Jenis pola desain milik model struktural dengan menyediakan abstraksi terstruktur dan menjembatani antara dua untuk mencapai decoupling.

Model ini melibatkan sebagai antarmuka bridging yang memungkinkan suatu entitas independen dari jenis kelas fungsi antarmuka. Kedua jenis kelas dapat terstruktur untuk mengubah dan mempengaruhi satu sama lain.

Kami dengan contoh berikut untuk menunjukkan mode bridge (jembatan Pola) penggunaan. Yang Anda dapat menggunakan metode yang sama tetapi kelas abstrak yang berbeda menjembatani pelaksanaan kelas menggambar lingkaran warna yang berbeda.

pengenalan

Maksud: abstraksi dan implementasi bagian dari pemisahan, sehingga mereka dapat bervariasi secara independen.

Solusi utama: Dalam berbagai keadaan bisa berubah, warisan kelas dapat menyebabkan ledakan, tidak ekspansi fleksibel.

Kapan menggunakan: Menerapkan sistem klasifikasi mungkin memiliki beberapa sudut, setiap sudut dapat berubah.

Cara untuk memperbaiki: menempatkan klasifikasi multi-sudut ini dipisahkan, sehingga mereka bebas dari perubahan, mengurangi coupling antara mereka.

Kode kunci: pelaksanaan kelas abstrak tergantung kelas.

contoh aplikasi: 1, dilahirkan kembali dari babi ke babi Marsekal kanopi reinkarnasi, reinkarnasi dari mekanisme duniawi dibagi menjadi dua tingkat, yaitu: jiwa dan tubuh, mantan bersesuaian dengan abstraksi, yang setara dengan realisasi tersebut.Makhluk dengan fungsi mendelegasikan, benda-benda fisik fungsi panggilan, makhluk tersebut dapat dipilih secara dinamis. 2, saklar di dinding, Anda dapat melihat saklar abstrak, tidak pipa beton di dalam bagaimana untuk mencapai.

Keuntungan: 1, abstrak dan mencapai pemisahan.2, baik skalabilitas. 3, detail pelaksanaan transparan kepada klien.

Kekurangan: pengenalan modus jembatan akan meningkatkan kesulitan pemahaman dan desain sistem, hubungan polimerisasi dibangun di atas lapisan abstraksi, membutuhkan pengembang untuk desain abstrak dan pemrograman.

skenario penggunaan: 1, jika sistem diperlukan antara abstraksi dan anggota peran konkret peran untuk menambahkan lebih banyak fleksibilitas untuk menghindari menciptakan statis hubungan warisan antara dua tingkat, melalui modus jembatan sehingga mereka Abstraksi Lapisan membangun hubungan.2, bagi mereka yang tidak ingin menggunakan sistem sebagai warisan multi-level atau warisan menyebabkan peningkatan tajam dalam jumlah kelas sistem, mode bridge ini terutama berlaku. 3, kelas ada dua dimensi independen dari perubahan, dan dua dimensi ini perlu diperluas.

Catatan: Untuk perubahan dari dua dimensi independen, dengan menggunakan mode bridge mudah dilakukan.

realisasi

Kami memiliki sebagai jembatanDrawAPIantarmuka dan dilaksanakanRedCircleDrawAPI antarmuka kelasentitas,GreenCircle.Shapeadalah kelas abstrak, objek penggunaanDrawAPI.BridgePatternDemo, kelas demonstrasi kami menggunakankelas Shapeuntuk menggambar lingkaran warna yang berbeda.

modus jembatan diagram UML

Langkah 1

Buat sebuah jembatan yang mengimplementasikan antarmuka.

DrawAPI.java

antarmuka publik DrawAPI {
   public void drawCircle (radius int, int x, int y);
}

Langkah 2

Buat sebuah entitas pelaksanaan menjembatani pelaksanaanDrawAPIdari kelas antarmuka.

RedCircle.java

public class RedCircle mengimplementasikan DrawAPI {
   @ Override
   public void drawCircle (radius int, int x, int y) {
      System.out.println ( "Menggambar Lingkaran [warna: merah, radius:"
         + Radius + ", x:" + x + "," + y + "]");
   }
}

GreenCircle.java

public class GreenCircle mengimplementasikan DrawAPI {
   @ Override
   public void drawCircle (radius int, int x, int y) {
      (System.out.println "Menggambar Lingkaran [color: radius hijau,:"
         + Radius + ", x:" + x + "," + y + "]");
   }
}

Langkah 3

DrawAPImenggunakan antarmuka untuk membuatShapekelasabstrak.

Shape.java

kelas abstrak publik Shape {
   dilindungi DrawAPI drawAPI;
   Bentuk yang dilindungi (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   public abstract void draw ();	
}

Langkah 4

Buat kelas entitasmengimplementasikanantarmukaShape.

Circle.java

public class Lingkaran meluas Shape {
   int swasta x, y, radius;

   Lingkaran publik (int x, int y, radius int, DrawAPI drawAPI) {
      super (drawAPI);
      this.x = x;  
      this.y = y;  
      this.radius = radius;
   }

   public void draw () {
      drawAPI.drawCircle (radius, x, y);
   }
}

Langkah 5

Menggunakan kelasShapedanDrawAPImenggambar lingkaran warna yang berbeda.

BridgePatternDemo.java

public class BridgePatternDemo {
   public static void main (String [] args) {
      Bentuk redCircle = Lingkaran baru (100100, 10, RedCircle baru ());
      Bentuk greenCircle = Lingkaran baru (100100, 10, GreenCircle baru ());

      redCircle.draw ();
      greenCircle.draw ();
   }
}

Langkah 6

Verifikasi output.

Menggambar Lingkaran [warna: merah, radius: 10, x: 100, 100]
Menggambar Lingkaran [warna: hijau, radius: 10, x: 100, 100]