Model perantara
Desain berorientasi objek mendorong distribusi perilaku lintas objek, yang dapat mengarah pada banyak koneksi antara objek. Dalam kasus terburuk, setiap objek perlu mengetahui semua objek lain.
Meskipun membagi sistem menjadi banyak objek dapat meningkatkan penggunaan kembali, lonjakan objek yang saling berhubungan akan mengurangi penggunaan kembali. Sejumlah besar hubungan koneksi membuat suatu tidak mungkin bagi suatu objek untuk bekerja tanpa bantuan objek lain (sistem bermanifestasi sebagai keseluruhan yang tak terpisahkan ), dan sulit untuk membuat perubahan besar pada perilaku sistem saat ini. Karena perilaku didistribusikan di antara banyak objek, hasilnya adalah bahwa banyak subkelas harus didefinisikan untuk menyesuaikan perilaku sistem. Oleh karena itu, kami memperkenalkan mediator objek mediator :
Melalui objek perantara, sistem struktur mesh dapat diubah menjadi struktur bintang yang berpusat pada perantara . Setiap objek spesifik tidak lagi memiliki hubungan langsung dengan objek lain, tetapi dimediasi darinya melalui objek perantara. Pengenalan objek perantara juga membuat struktur sistem tidak mengalami sejumlah besar modifikasi karena pengenalan objek baru.
Mode Mediator: Juga dikenal sebagai Mode Mediator , menggunakan objek mediator untuk merangkum interaksi serangkaian objek, sehingga setiap objek tidak perlu ditampilkan dan dirujuk satu sama lain, sehingga melonggarkan kopling dan mengubah interaksi mereka secara mandiri :
(Sumber Gambar: Pola Desain: Dasar dari perangkat lunak berorientasi objek yang dapat digunakan kembali) Tips: Setiap kolega hanya mengetahui keberadaan mediator , dan tidak perlu tahu apakah ada kolega lain (atau bagaimana memisahkannya). Itu hanya perlu mengirim pesan ke mediator, dan kemudian meneruskannya ke kolega lain ( mediator menyimpan semua hubungan kolega , dan hanya mediator yang tahu berapa banyak/ kolega mana yang ada di sana).
Implementasi Mode
Pernyataan penyerang PBB dari berbagai negara dan memediasi hubungan dengan masing -masing negara:
Negara bagian mengirim dan menerima pesan ke Dewan Keamanan PBB, yang 'tepat' permintaan maju di antara negara -negara untuk tindakan kolaboratif:
Kampus
Kelas kolega abstrak, tentukan metode publik dari masing -masing kolega:
/** * @Author Jifang * @since 16/8/28 4:22 PM. */negara kelas abstrak publik {mediator Unitednations yang dilindungi; nama string pribadi; negara publik (Mediator Unitednations, nama string) {this.mediator = mediator; this.name = name; } public string getName () {return name; } terlindungi abstrak void mendeklarasikan (string msg); abstrak void terima yang dilindungi (string msg);}--------------------------------------------------------------------------------
CONCRTECOLLEEGIEG
Kolega spesifik:
• Setiap kelas kolega mengetahui objek mediatornya.
• Setiap objek kolega berkomunikasi dengan perantara ketika perlu berkomunikasi dengan kolega lain.
Class USA Extends Country {Public USA (Mediator Unitednations, Name String) {Super (Mediator, Name); } @Override public void mendeklarasikan (string msg) {mediator.declare (ini, msg); } @Override public void menerima (string msg) {System.out.println ("Amerika Serikat diterima: [" + msg + "]"); }} class Irak Extends Country {Public Irak (Mediator Unitednations, Name String) {Super (Mediator, Name); } @Override public void mendeklarasikan (string msg) {mediator.declare (ini, msg); } @Override public void menerima (string msg) {System.out.println ("Irak diterima: [" + msg + "]"); }} kelas China Extends Country {Public China (Mediator Unitednations, Nama String) {Super (Mediator, Name); } @Override public void mendeklarasikan (string msg) {mediator.declare (ini, msg); } @Override public void menerima (string msg) {System.out.println ("China menerima: [" + msg + "]"); }}--------------------------------------------------------------------------------
Penengah
Mediator Abstrak: Tentukan antarmuka untuk berkomunikasi dengan objek kolega:
Publik Abstrak Kelas Unitednations {Daftar Protected <Country> Negara = LinkedList baru <> (); Public Void Register (negara negara) {country.add (negara); } public void hapus (negara negara) {country.remove (negara); } terlindungi abstrak void Declare (negara negara, string msg);}--------------------------------------------------------------------------------
Concretemediator
Perantara spesifik:
• memahami dan memelihara kolega masing -masing;
• REALITKAN Perilaku Kolaboratif dengan mengoordinasikan setiap objek kolega (menerima pesan dari kolega dan mengeluarkan perintah untuk kolega tertentu).
class UnitedNationsSecurityCouncil extends UnitedNations { /** * The Security Council mediates in the middle* * @param country * @param msg */ @Override protected void declare(Country country, String msg) { for (Country toCountry : countries) { if (!toCountry.equals(country)) { String name = country.getName(); tocountry.receive (name + "katakanlah dengan damai:" + msg); }}}} Jika tidak ada ekstensi, mediator dapat dikombinasikan dengan konkretemediator menjadi satu.
•Klien
klien kelas publik {@test public void client () {unitednations mediator = New UnitedNationsSecurityCouncil (); Country USA = USA baru (Mediator, "USA"); Country cina = Cina baru (mediator, "Cina"); Country Irak = Irak baru (mediator, "Irak"); Mediator.Register (USA); Mediator.Register (Cina); Mediator.Register (Irak); usa.declare ("Saya ingin menyerang Irak, siapa yang peduli tentang siapa saya sedang terburu -buru !!!"); System.out.println ("----------------"); China.declare ("Kami sangat mengutuk !!!"); System.out.println ("-----------------------"); iraq.declare ("Ayo, datang saling menyakiti !!!"); }}--------------------------------------------------------------------------------
ringkasan
Munculnya mediator mengurangi kopling antara setiap perguruan tinggi, yang memungkinkan kolega dan mediator diubah secara mandiri dan digunakan kembali. Karena objek berkolaborasi, mediasi diambil sebagai konsep independen dan dienkapsulasi dalam suatu objek, fokus perhatian dialihkan dari perilaku masing -masing objek itu sendiri ke interaksi di antara mereka, sehingga sistem dapat dilihat dari perspektif yang lebih makro.
• Penerapan
Model perantara mudah diterapkan dalam sistem dan mudah disalahgunakan dalam sistem. Ketika grup objek "banyak-ke-banyak" muncul dalam sistem, jangan terburu-buru menggunakan perantara. Yang terbaik adalah merefleksikan apakah desain sistem itu masuk akal. Karena concretemediator mengontrol sentralisasi, kompleksitas interaksi menjadi kompleksitas perantara, membuat perantara lebih kompleks daripada concretecolleague. Disarankan untuk menggunakan model perantara dalam situasi berikut:
◦ Sekelompok objek berkomunikasi dengan cara yang jelas tetapi kompleks. Interdependensi yang dihasilkan membingungkan dan sulit dipahami.
◦ Suatu objek mengacu pada banyak objek lain dan berkomunikasi secara langsung dengan objek -objek ini, sehingga sulit untuk menggunakan kembali objek tersebut.
◦ Ingin menyesuaikan perilaku yang didistribusikan di antara beberapa kelas, tetapi tidak ingin menghasilkan terlalu banyak subclass.
• Mode terkait
◦Facade berbeda dari mediator karena mengabstraksi subsistem objek, sehingga memberikan antarmuka yang lebih nyaman. Protokolnya searah, yaitu objek fasad membuat permintaan ke kelas subsistem ini, tetapi sebaliknya tidak bisa. Sebaliknya, mediator memberikan perilaku kolaborasi yang tidak didukung atau tidak dapat didukung oleh setiap objek perguruan tinggi, dan protokolnya multi-directional.
◦Colleague dapat berkomunikasi dengan mediator menggunakan mode pengamat.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.