Artikel ini menjelaskan penggunaan mode jembatan untuk menerapkan fungsi sakelar dan pencahayaan cahaya. Bagikan untuk referensi Anda, sebagai berikut:
1. Definisi Pola
Mode jembatan, juga dikenal sebagai mode jembatan, dalam sistem perangkat lunak, karena logikanya sendiri, ada dua atau lebih dimensi perubahan. Cara menangani perubahan multi-dimensi seperti itu, mode jembatan memungkinkan sistem perangkat lunak untuk dengan mudah berubah dalam berbagai arah tanpa memperkenalkan kompleksitas tambahan.
Tiga kata kunci dari mode jembatan adalah: abstraksi, implementasi, dan decoupling.
2. Contoh model
1 metode analisis mode jembatan
Kami meminjam pencahayaan cahaya untuk menggambarkan mode ini.
Tanpa warisan, gunakan metode kombinasi objek untuk mengubah hubungan yang kuat antara sakelar dan lampu menjadi hubungan yang lemah.
2 Mode Jembatan Model Kelas Statis
3 contoh kode
3.1 Buat Antarmuka Lampu Listrik
Paket com.demo.bridge.lights;/** * Antarmuka cahaya * * @author * */antarmuka publik Ilight {// Nyalakan public void electricConnected (); // pencahayaan public void light (); // Current off public void electricclosed ();}3.2 Buat sakelar umum
Paket com.demo.bridge.switchs; import com.demo.bridge.lights.ilight;/** * Beralih kelas tingkat atas * * @author * */kelas publik Baseswitch {// Gunakan kombinasi untuk mengatur ilight ke properti pribadi internal ini adalah lampu ilight yang dilindungi jembatan; // Metode membangun menyuntikkan jenis cahaya eksternal ke pangkalan publik (ILight Light) {this.light = light; } / *** Lampu pada metode* / public final void makelight () {// Nyalakan sakelar untuk menyalakan saat ini.light.electricConnected (); // pencahayaan this.light.light (); // matikan sakelar untuk mematikan arus this.light.electricclosed (); }}3.3 Buat sakelar jarak jauh
package com.demo.bridge.switchs.sub;import com.demo.bridge.lights.ILight;import com.demo.bridge.switchs.BaseSwitch;/** * The remote control switch inherits the BaseSwitch extension function* * @author * */public class RemoteControlSwitch extends BaseSwitch{ // Construct method public RemoteControlSwitch(ILight light) { super (ringan); } / *** Gunakan sakelar remote control untuk mengontrol lampu pada** @param operatorColor* warna cahaya* / public final void MakeremoTeLight (int operaColor) {// Nyalakan sakelar untuk mengaktifkan saat ini.light.electricConnected (); // menyalakan this.light.light (); String color = ""; switch (operColor) {case 1: color = "warm color"; merusak; case 2: color = "blue"; merusak; Kasus 3: Warna = "Merah"; merusak; default: color = "white"; merusak; } System.out.println ("... sekarang adalah" + warna + "!"); // tutup sakelar untuk mematikan arus this.light.electricclosed (); }}3.4 Implementasi Lampu Pijar
Paket com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * implementasi lampu pijar * * @author * */kelas publik Incandescentlight mengimplementasikan ilight {// saat ini void -void electricclosed () {System.out.println ("Lampu pijar dipublikasikan ..." } // Nyalakan public void ElectricConnected () {System.out.println ("lampu pijar dihidupkan ..."); } // pencahayaan public void light () {System.out.println ("Pijar Pijar!"); }}3.5 Implementasi Lampu Kristal
Paket com.demo.bridge.lights.impl; import com.demo.bridge.lights.ilight;/** * implementasi kristal * @Author * */kelas publik Crystallight mengimplementasikan Ilight {// Current Off Public Void Electriclosed () {System.out.println ("Crystallight dimatikan ..."); } // Nyalakan public void ElectricConnected () {System.out.println ("Crystallight dihidupkan ..."); } // pencahayaan public void light () {System.out.println ("Crystal Lamp Lighting!"); }}3.6 Lampu pijar Kontrol Sakelar Umum, lampu kristal kontrol sakelar jarak jauh
Paket com.demo; import com.demo.bridge.lights.ilight; import com.demo.bridge.lights.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; import com.demo.bridge.switchs.basswitch; impor com.demo.witch.switch.bridge @Author * */kelas publik ClientForBridge {/** * @param args */public static void main (string [] args) {// instance lampu incandescent ilight incandescentlight = new Incandescentlight (); // Crystal Lamp Instance ilight crystallight = new crystallight (); // General Switch System.out.println ("- General Switch--"); Baseswitch switch1 = BASESWITCH baru (lampu pijar); switch1.makelight (); System.out.println ("/n-- sakelar remote control--"); // sakelar remote control remotecontrolswitch = remoteControlswitch baru (crystallight); RemoteControlswitch.makeremotelight (1); }}Hasil Menjalankan:
- sakelar umum-
Lampu pijar dinyalakan ...
Pencahayaan lampu pijar!
Lampu pijar dimatikan ...
- sakelar remote control-
Lampu kristal dinyalakan ...
Pencahayaan lampu kristal!
... sekarang hangat!
Lampu kristal dimatikan ...
3.7 Lampu kristal kontrol sakelar umum, lampu pijar kontrol kontrol remote
Paket com.demo; import com.demo.bridge.lights.ilight; import com.demo.bridge.lights.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; import com.demo.bridge.switchs.basswitch; impor com.demo.witch.switch.bridge @Author * */kelas publik ClientForBridge {/** * @param args */public static void main (string [] args) {// incandescentlight contoh ilight incandescentlight = new Incandescentlight (); // contoh lampu kristal ilight crystallight = new crystallight (); // General Switch System.out.println ("- General Switch--"); Baseswitch switch1 = base baru (crystallight); switch1.makelight (); System.out.println ("/n-- sakelar remote control--"); // sakelar remote control remotecontrolswitch = remoteControlswitch baru (lampu pijar); RemoteControlswitch.makeremotelight (1); }}Hasil berjalan
- sakelar umum-
Lampu kristal dinyalakan ...
Pencahayaan lampu kristal!
Lampu kristal dimatikan ...
- sakelar remote control-
Lampu pijar dinyalakan ...
Pencahayaan lampu pijar!
... sekarang hangat!
Lampu pijar dimatikan ...
3. Prinsip Desain
1 Cobalah untuk menggunakan agregasi objek dari asosiasi yang lemah dan hindari menggunakan asosiasi warisan yang kuat.
2 Decoupling abstraksi dan implementasi.
4. Gunakan kesempatan
Saya tidak ingin hubungan ikatan yang tetap antara kelas abstrak dan bagian implementasi
Bagian abstraksi dan implementasi dari 2 kelas harus diperluas melalui metode pembungkaman.
3 Modifikasi bagian implementasi abstrak tidak mempengaruhi klien, yaitu, kode klien tidak harus dikompilasi ulang.
5. Mode Jembatan Diagram Kelas Statis
Untuk informasi lebih lanjut tentang algoritma java, pembaca yang tertarik dengan situs ini dapat melihat topik: "struktur data java dan tutorial algoritma", "ringkasan tips node dom java", "ringkasan file operasi java dan direktori" dan "ringkasan tip operasi java cache" tips java "tips java" Tips "Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.