Definisi jembatan: memisahkan abstraksi dan perilaku, dan menggabungkan masing -masing secara independen tetapi dinamis.
Mengapa Menggunakan Mode Jembatan
Secara umum, ketika kelas abstrak atau antarmuka memiliki banyak implementasi konkret (subkelas konkret), hubungan antara beton ini mungkin sebagai berikut:
1. Implementasi khusus ini paralel.
2. Dalam aplikasi praktis, seringkali mungkin untuk tumpang tindih secara konseptual di antara beberapa kelas konkret ini. Maka kita perlu memisahkan abstrak umum dan perilaku umum.
Misalnya, sebagai contoh, ada dua jenis kopi: cangkir sedang dan besar, dan ada juga jenis susu dan susu. Jika warisan sederhana digunakan, ada konsep yang tumpang tindih antara empat implementasi spesifik ini (juta gelas dengan susu tanpa susu) karena ada cangkir sedang dengan susu, dan ada cangkir sedang tanpa susu. Ini juga di Piala Tengah. Kemudian kami menggunakan mode jembatan untuk mengimplementasikannya.
Cara Menerapkan Mode Jembatan
Kopi yang disebutkan di atas adalah contoh. Kami awalnya berencana untuk merancang satu antarmuka (kelas abstrak). Setelah menggunakan pola jembatan, kami perlu memisahkan abstraksi dan perilaku.
Mari kita lihat kode antarmuka bagian abstrak:
Salinan kode adalah sebagai berikut:
Kopi kelas abstrak publik {
Coffeeimp Coffeeimp;
public void setCoffeeMP () {
this.coffeeMP = coffeeImpsingleton.getThecoffeimp ();
}
public coffeeimp getCoffeeMP () {return this.coffeeMP;}
public abstrak void pourcoffee ();
}
CoffeeMP adalah antarmuka perilaku tanpa susu yang ditambahkan.
Salinan kode adalah sebagai berikut:
Kelas Abstrak Publik CoffeePM {
public abstrak void pourcoffeeMP ();
}
Sekarang kami memiliki dua kelas abstrak, kami mewarisi mereka masing -masing dan mengimplementasikan kelas konkret:
Salinan kode adalah sebagai berikut:
// Piala Tengah
kelas publik mediumcoffee memperluas kopi {
public mediumeCoffee () {setCoffeeMP ();}
public void pourcoffee () {
Coffeeimp coffeeimp = this.getCoffeeMP ();
// Kami menggunakan jumlah pengulangan untuk menjelaskan apakah akan membuat cangkir mid atau cangkir besar.
coffeeimp.pourcoffeeup ();
}
}
}
Salinan kode adalah sebagai berikut:
// Piala Besar
SuperSizeCoffee kelas publik memperluas kopi {
public supersizeCoffee () {setCoffeeMP ();}
public void pourcoffee () {
Coffeeimp coffeeimp = this.getCoffeeMP ();
// Kami menggunakan jumlah pengulangan untuk menjelaskan apakah akan membuat cangkir mid atau cangkir besar.
coffeeimp.pourcoffeeup ();
}
}
}
Di atas adalah implementasi spesifik dari cangkir medium dan cangkir besar masing -masing.
Salinan kode adalah sebagai berikut:
// Tambahkan susu
MilkCoffeePM kelas publik memperpanjang Coffeeimp {
MilkCoffeeMP () {}
public void pourcoffeeMP () {
System.out.println ("Ditambahkan susu lezat");
}
}
// Tidak ada susu yang ditambahkan
Public Class FragrantCoffeeMIP memperluas CoffeeMP {
FragrantCoffeeMP () {}
public void pourcoffeeMP () {
System.out.println ("Tidak ada yang ditambahkan, wewangian segar");
}
}
Kami telah mengatur kerangka dasar model jembatan.
1. Tambahkan susu ke cangkir sedang
2. Tidak ada susu yang ditambahkan dalam cangkir sedang
3. Tambahkan susu ke cangkir besar
4. Cangkir besar tanpa susu
Mari kita lihat bagaimana itu digabungkan secara dinamis.
Salinan kode adalah sebagai berikut:
Kelas publik CoffeeMpsingleton {
Coffeeimp Coffeeimp Pribadi;
Public CoffeeImpsingleton (Coffeeimp Coffeeimpin)
{this.coffeeup = coffeeimpin;}
public static coffeeimp getTheCoftEeMP () {
Kembali Coffeeimp;
}
}
Mari kita lihat bagaimana secangkir susu sedang dan secangkir susu besar keluar:
// Keluarkan susu
CoffeeImpsingleton CoffeeImpsingleton = CoffeeImpsingleton baru (MilkCoffeePn ());
// cangkir tengah dengan susu
Mediumcoffee mediumcoffee = mediumcoffee baru ();
mediumcoffee.pourcoffee ();
// secangkir susu besar
SupersizeCoffee supersizeCoffee = supersizeCoffee baru ();
supersizeCoffee.pourcoffee ();
CATATAN: Kelas eksekusi skema jembatan seperti coffeeimp dan coffee adalah hubungan satu-ke-satu, dan membuat dengan benar Coffeeimp adalah kunci dari skema ini.
Aplikasi Mode Jembatan di EJB
Ada pola Objek Akses Data (DAO) di EJB, yang memisahkan logika bisnis dari sumber daya data tertentu karena basis data yang berbeda memiliki operasi basis data yang berbeda. Perilaku yang mengoperasikan basis data yang berbeda secara independen disusun ke dalam antarmuka perilaku DAO, sebagai berikut:
1. Objek Bisnis (Mirip dengan Kopi)
Menerapkan beberapa operasi bisnis abstrak: seperti menemukan pengguna untuk melakukan semua pesanan. DaoImplementor digunakan untuk operasi basis data.
2. Objek Akses Data (Mirip dengan Coffeeimp)
Beberapa operasi abstrak pada sumber daya basis data.
3.
Operasi basis data spesifik, seperti "masukkan ke" dan pernyataan lainnya, Orderdaooracle adalah Oracle Orderdaosybase adalah database Sybase.
4. Database (Cloudscape, Oracle, atau Sybase Database melalui JDBC API)