Artikel ini menjelaskan implementasi fungsi ruang obrolan multi-orang berdasarkan mode perantara. Bagikan untuk referensi Anda, sebagai berikut:
Definisi pola
Pola mediator menggunakan objek mediator untuk merangkum interaksi antara serangkaian objek, sehingga instance objek lain tidak perlu ditampilkan di setiap objek, sehingga mengurangi tingkat kopling antara setiap objek dan mengubah hubungan interaksi antara objek secara independen.
Contoh mode kedua
1 analisis pola
Kami meminjam ruang obrolan multi-orang untuk menggambarkan pola ini
2 mode mediasi diagram kelas statis
3 contoh kode
3.1 Antarmuka Perantara - Imediator
Paket com.demo.mediator; import com.demo.colleague.iuser;/** * antarmuka perantara * * @author * */antarmuka publik Imediator {/** * Informasi pengguna terdaftar * * @param pengguna */Registrasi public void (iUser pengguna); / *** Kirim pesan ke semua orang** @param pengguna* Kirim pesan*/ public void notifyallmessage (pengguna iUser);}3.2 Implementasi Perantara - Concretemediator
Paket com.demo.mediator; import java.util.arraylist; import java.util.iterator; import java.util.list; com.demo.colleague.iuser;/** * Implementasi perantara * @Author */public Class concretemediator Immedement {iMer -list {iuthor * / ** * Informasi Pengguna Terdaftar * * @param pengguna */ public void regist (iuser user) {if (user! = Null &&! List.contains (user)) {list.add (user); }} / *** Kirim pesan** @param pengguna* Kirim pesan* / public void notifyAllMessage (pengguna iUser) {iterator <iUser> iterator = list.iterator (); Iuser tmpuser = null; while (iterator.hasnext ()) {tmpuser = iterator.next (); if (tmpuser! = null &&! tmpuser.equals (user)) {// Kecualikan pengirim pesan tmpuser.receivemessage (user.getMessage ()); }}}}3.3 Antarmuka Pengguna - IUSER
Paket com.demo.colleAgue;/** * Antarmuka pengguna * * @author * */antarmuka publik iuser {/** * menerima pesan * * @param pesan * pesan */public void receiveMessage (pesan string); / *** Kirim pesan** @param pesan* pesan*/ public void sendMessage (string pesan); / ** * Dapatkan konten pesan yang dikirim * * @return */ public string getMessage ();}3.4 AbstractUser - AbstractUser
Paket com.demo.colleague; import com.demo.mediator.imedator;/** * Abstrak Informasi Pengguna * * @author * */Kelas Abstrak Publik AbstractUser mengimplementasikan iuser {// mediator imediator yang dilindungi perantara; // Nama string yang dilindungi; // pesan string yang dilindungi pesan; Public AbstractUser (mediator iMedator, nama string) {this.mediator = mediator; this.name = name; } / *** Kirim pesan** @param pesan* pesan* / public void sendMessage (pesan string) {this.message = pesan; System.out.println (this.name + "katakan:" + this.message); mediator.notifyAllMessage (ini); } public String getMessage () {return pesan; }}3.5 Pengguna A - Usera
Paket com.demo.colleague; import com.demo.mediator.imediator;/** * pengguna a * * @author * */kelas publik Usera memperluas abstractUser {public usera (mediator imediator, nama string) {super (mediator, nama); // Daftarkan di mediator.Regist (ini); } / *** menerima metode pesan* / public void receiveMessage (pesan string) {System.out.println ("Pengguna pesan yang diterima:" + pesan); }}3.6 Pengguna B - userb
Paket com.demo.colleague; import com.demo.mediator.imediator;/** * pengguna b * * @author * */kelas publik userb memperluas abstractUser {public userB (mediator imediator, nama string) {super (mediator, nama); // Daftarkan dalam objek mediator mediator.regist (ini); } / *** menerima metode pesan* / public void receiveMessage (pesan string) {System.out.println ("Pengguna b menerima pesan:" + pesan); }}3.7 Pengguna C - USERC
Paket com.demo.colleague; import com.demo.mediator.imediator;/** * pengguna c * * @author * */kelas publik Userc memperluas abstractUser {public userc (mediator imediator, nama string) {super (mediator, nama); // Daftarkan dalam objek mediator mediator.regist (ini); } / *** menerima metode pesan* / public void receiveMessage (pesan string) {System.out.println ("Pengguna C menerima pesan:" + pesan); }}3.8 Menjalankan Ruang Obrolan Multiplayer
Paket com.demo; import com.demo.colleague.iuser; import com.demo.colleague.usera; impor com.demo.colleague.userb; import com.demo.colleague.userc; import com.demo.mediator.concretemediator; impor com.demo.medior; Class Client { / ** * @param args * / public static void main (string [] args) {// Buat ruang obrolan (mediator) imediator mediator = concretemediator baru (); // Buat informasi pengguna iuser usera = Usera baru (mediator, "Zhang San"); Iuser userb = UserB baru (mediator, "li si"); Iuser userc = USERC baru (mediator, "wang wu"); System.out .println ("====================================================================================================================================== ============================================================================================================================================================= ================================================================================================================================================================ ============================================================================================================================================================= .println ("========================================================= =================================================================== =================================================================== ==================================================================== =================================================================== =================================================================== =================================================================== ==================================================================== .println ("========================================================= =================================================================== =================================================================== ==================================================================== =================================================================== =================================================================== =================================================================== ==================================================================== .println ("===============================================================================================================================================/4 hasil berjalan
==============================================================================================================
Zhang San berkata: Halo semuanya, Nama saya Zhang San! Saya baru bagi Anda, tolong jaga saya!
Pengguna B Diterima Pesan: Halo semuanya, Nama saya Zhang San! Saya baru bagi Anda, tolong jaga saya!
Pengguna C Menerima Pesan: Halo semuanya, Nama saya Zhang San! Saya baru bagi Anda, tolong jaga saya!
==============================================================================================================
==============================================================================================================
Li Si berkata: Halo, nama saya Li Si, selamat datang untuk bergabung!
Pengguna Pesan yang Diterima: Halo, Nama saya Li Si, selamat datang untuk bergabung!
Pengguna C Menerima Pesan: Halo, Nama saya Li Si, selamat datang untuk bergabung!
==============================================================================================================
==============================================================================================================
Wang Wu berkata: Saya Wang Wu, selamat datang!
Pengguna Pesan yang Diterima: Saya Wang Wu, selamat datang!
Pengguna B yang Diterima Pesan: Saya Wang Wu, selamat datang!
==============================================================================================================
Tiga prinsip desain pola ini
1 Ketergantungan satu-ke-banyak objek dikonversi menjadi dependensi satu-ke-satu
2 Kontrol terpusat meningkatkan penggunaan kembali kelas
Empat kesempatan penggunaan
(1) Sekelompok objek berkomunikasi dengan cara yang terdefinisi dengan baik tetapi kompleks, menghasilkan struktur saling ketergantungan yang membingungkan dan sulit untuk dipahami. Perhatikan saling ketergantungan antara banyak objek.
(2) Ingin menyesuaikan perilaku yang didistribusikan di beberapa kelas, tetapi tidak ingin menghasilkan terlalu banyak subclass.
(3) Penelitian dan pengembangan arsitektur produk membutuhkan lebih banyak peluang untuk berkembang.
Lima diagram kelas statis mode perantara
Untuk lebih banyak konten terkait Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Pendahuluan dan Tutorial Lanjutan tentang Pemrograman Berorientasi Objek Java", "Tutorial tentang Struktur Data Java dan Algorithma", "Ringkasan Keterampilan Operasi Java Java", "Ringkasan Operasi Java File dan Keterampilan Operasi Direktori" dan Ringkasan Java Operasi Java "," Ringkasan Operasi Java Keterampilan Operasi Direktori "dan" Ringkasan Java Ringkasan JAVA "
Saya harap artikel ini akan membantu pemrograman Java semua orang.